2011-04-21 62 views
4

我想從Java創建XML,並遇到縮進問題。在下面的代碼,你可以看到OutputKeys.INDENT設置爲yes ...縮進XML與變壓器

 //set up a transformer 
     TransformerFactory transfac = TransformerFactory.newInstance(); 
     Transformer trans = transfac.newTransformer(); 
     trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 
     trans.setOutputProperty(OutputKeys.INDENT, "yes"); 

     //create string from xml tree 
     StringWriter sw = new StringWriter(); 
     StreamResult result = new StreamResult(sw); 
     DOMSource source = new DOMSource(doc); 
     trans.transform(source, result); 
     String xmlString = sw.toString(); 

     //print xml 
     System.out.println(xmlString); 

但似乎沒有影響,輸出是:

<dataset id="1"><br> 
<path></path><br> 
<session id="1"><br> 
<method><br> 
<timestamp>a timestamp</timestamp><br> 
<signiture><br> 
<classPath></classPath><br> 
<name>methodName</name><br> 
<declarationType>String</declarationType><br> 
<parameters><br> 
<parameter>String</parameter><br> 
<parameter>int</parameter><br> 
</parameters><br> 
</signiture><br> 
<arguments><br> 
<argument>SomeValue</argument><br> 
<argument>AnotherValue</argument><br> 
</arguments><br> 
<return>ReturnValue</return><br> 
</method><br> 
</session><br> 
</dataset><br> 
+1

和這裏的另一個問題:http://stackoverflow.com/questions/1384802/java-how-to-indent-xml-generated-by-tran sformer – Anon 2011-04-21 20:28:15

回答

5

嘗試設置縮進量,AFAIK默認0

trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4") 
0
Document doc; 

..... 

TransformerFactory factory = TransformerFactory.newInstance(); 
Transformer transformer = factory.newTransformer(); 
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); 
transformer.transform(new DOMSource(doc), new StreamResult(new File("filename.xml"))); 
transformer.transform(new DOMSource(doc), new StreamResult(System.out));