防止空的xml元素转换为自闭元素

时间:2014-08-31 02:47:56

标签: java xml xerces

我正在使用Xerces Library在文档中编写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 个答案:

答案 0 :(得分:3)

我所知道的大多数序列化程序都不允许您选择是否在输出中使用空元素标记,原因很简单,没有理智的XML使用者应该关心它们是否被使用。如果你照顾并且不是疯了,那将有助于解释你关心的原因。

答案 1 :(得分: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));
    }

}