提问者:小点点

防止空xml元素转换为自动关闭元素


我正在使用Xerces库在文档中编写XML。为此,我使用OutputFormat类在XMLSerializer中传递OutputFormat的对象。但我所有的空xml元素都转换为自动关闭的xml元素。

我想要这个:

<Company Name="Dummy">
</Company>

但它的到来就像

<Company Name="Dummy" />

我尝试了以下代码:

try {
    //print
    OutputFormat format = new OutputFormat(dom,"iso-8859-1",true);          
    //to generate output to console use this serializer

    XMLSerializer serializer = new XMLSerializer(System.out, format);           
    serializer.serialize(dom);

} catch(IOException ie) {
        ie.printStackTrace();
}

有人能帮我解决这个问题吗。

谢谢


共2个答案

匿名用户

如果您愿意使用其他API来解决问题,请尝试以下方法:

import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stax.StAXResult;

import org.w3c.dom.Document;

public class XmlWritter {

    public static void main(String[] args) throws Exception {
        Document doc = ...
        XMLStreamWriter writer = XMLOutputFactory.newFactory().createXMLStreamWriter(System.out);
        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        transformer.transform(new DOMSource(doc), new StAXResult(writer));
    }

}

匿名用户

我知道的大多数序列化程序都不允许您选择是否在输出中使用空元素标记,原因很简单,任何理智的XML使用者都不应该关心是否使用了空元素标记。如果你真的在乎,并且不是疯了,这将有助于解释为什么你在乎。