有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将空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) 个答案

  1. # 1 楼答案

    如果您愿意使用其他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));
        }
    
    }
    
  2. # 2 楼答案

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