2014-12-03 60 views
0

我使用XML編寫使用的XmlSerializer和更改的XML前綴N0到NS1

我想前綴設置爲NS1 throught整個文檔,所以我用:

XmlSerializer serializer = Xml.newSerializer(); 
    StringWriter writer = new StringWriter(); 
    try { 
     serializer.setOutput(writer); 
     serializer.startDocument("UTF-8", true); 
     serializer.setPrefix("ns1", "http://tempuri.org/XMLSchema.xsd"); 
     serializer.setPrefix("xsi","http://www.w3.org/2001/XMLSchema-instance"); 
     serializer.startTag("ns1" , "HBA"); 

     serializer.startTag("ns1", "TITLE"); 
     serializer.text(cd.title); 
     serializer.endTag("ns1", "TITLE"); 
     // and till the end 

但我當檢查XML文件,我看到這一點:

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><n0:HBA xmlns:ns1="http://tempuri.org/XMLSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n0="ns1"><n0:TITLE></n0:TITLE> 

所以在這裏你可以看到的前綴設置爲N0不NS1,因爲我需要。也是XML是writen側的方式,但我想有一個單獨的行中的每個標籤:

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?> 
<ns1:HBA xmlns:ns1="http://tempuri.org/XMLSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<ns1:TITLE>TEXT</ns1:TITLE> 
<ns1:NAME>TEXT</ns1:NAME> 

回答

0

我也有這個問題,我用這種方式來解決。

嘗試使用setPrefix中定義的「名稱空間」。使用「名稱空間」而不是「」前綴「作爲startTag的第一個參數。

例子:

serializer.setPrefix("ns1", "http://tempuri.org/XMLSchema.xsd"); 
serializer.startTag("http://tempuri.org/XMLSchema.xsd" , "HBA"); 

輸出應該是:

<ns1:HBA> 

如果你想標記分開,使用setFeature

setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); 

參考:

相關問題