2014-08-31 71 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