java 如何防止xml Transformer将空标签转换为单个标签

ssm49v7z  于 5个月前  发布在  Java
关注(0)|答案(5)|浏览(78)

我使用javax.xml.transform.Transformer类将DOM源代码转换为XML字符串。我在DOM树中有一些空元素,这些元素变成了我不想要的标记。
如何防止<sampletag></sampletag>变成<sampletag/>

krugob8w

krugob8w1#

我也有同样的问题。这是得到那个结果的函数。

public static String fixClosedTag(String rawXml){

    LinkedList<String[]> listTags = new LinkedList<String[]>(); 
    String splittato[] =  rawXml.split("<");

    String prettyXML="";

    int counter = 0;
    for(int x=0;x<splittato.length;x++){
        String tmpStr = splittato[x];
        int indexEnd = tmpStr.indexOf("/>");
        if(indexEnd>-1){
            String nameTag = tmpStr.substring(0, (indexEnd));
            String oldTag = "<"+ nameTag +"/>";
            String newTag = "<"+ nameTag +"></"+ nameTag +">";
            String tag[]=new String [2];
            tag[0] = oldTag;
            tag[1] = newTag;
            listTags.add(tag);
        }
    }
    prettyXML = rawXml;

    for(int y=0;y<listTags.size();y++){
        String el[] = listTags.get(y);

        prettyXML = prettyXML.replaceAll(el[0],el[1]);
    }

    return prettyXML;
}

字符串

j7dteeu8

j7dteeu82#

如果你想控制XML的格式,提供你自己的ContentHandler来将XML修饰成“文本”。对于接收端(除非是人类)来说,它接收的是<name></name>还是<name/>都没有关系-它们都意味着同样的事情。

aydmsdu9

aydmsdu93#

这两种表示形式等价于XML解析器,所以这并不重要。
如果您想使用XML解析器以外的任何东西来处理XML,那么无论如何,您最终都会做大量的工作并得到一个XML解析器。

rwqw0loc

rwqw0loc4#

如果您通过 NEEDS 发送的进程不需要自关闭元素(它不应该),您可以通过将内容放置在元素中来强制元素不自关闭。
PDF转换器如何处理XML注解或处理指令?
第一个月
<sampletag><?SampleProcessingInstruction?></sampletag>

wgmfuz8q

wgmfuz8q5#

我在下面尝试防止将空标签转换为单个标签:
Transformer tf = transformerFactory.newInstance().newTransformer(); tf.setOutputProperty(OutputKeys.METHOD,“html”)
它保留了空标签。

相关问题