2014-08-31 70 views
3

我使用Xerces库在文档中编写XML。为此,我使用OutputFormat类在XMLSerializer中传递OutputFormat的对象。但是,我所有的空xml元素都转换为自闭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(); 
} 

有人能帮助我在这。

感谢,

+6

出于好奇,为什么你不想使用缩写语法? – 2014-08-31 02:50:02

+0

您是否愿意使用其他库来解决该问题? – shlomi33 2014-08-31 05:51:56

回答

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)); 
    } 

} 
3

大多数串行不允许你选择是否要使用空元素标记在输出中,原因很简单,因为没有任何XML的理智消费者应该关心它们是否被使用。如果你关心,而不是疯狂,这将有助于解释你为什么关心。

+1

我在下游的某个地方闻到一个“手写的”XML解析器... – 2014-09-02 22:04:03