2015-12-22 136 views
1

我正在開發android項目,並且在一些任務中需要創建xml文檔文件。 我需要創建一個包含屬性結腸這樣把冒號(:)放在xml屬性中

<APPLICAD_EXPORT xsi:noNamespaceSchemaLocation="file:///c:/temp/applicad-export.xsd"> 

我可以成功地創建XML文件,但問題是,我不能爲屬性APPLICAD_EXPORT加冒號。

到目前爲止,我不喜歡這樣來冒號的屬性前綴

XmlSerializer serializer = Xml.newSerializer(); 

      //we set the FileOutputStream as output for the serializer, using UTF-8 encoding 
      serializer.setOutput(fileos, "UTF-8"); 
      //Write <?xml declaration with encoding (if encoding not null) and standalone flag (if standalone not null) 
      serializer.startDocument(null, Boolean.valueOf(true)); 
      //set indentation option 
      serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); 

      serializer.startTag(null, "APPLICAD_EXPORT"); 
      serializer.attribute(null, "xsi&#58;noNamespaceSchemaLocation", "file:///c:/temp/applicad-export.xsd"); 

,但它顯示錯誤說屬性規格授權值XSI

我想可能有一些方式來實現這一目標但我無法弄清楚。

回答

1

冒號很特殊:您的屬性名稱由一個名稱空間前綴(這是名稱空間URI的縮寫,在本例中爲「http://www.w3.org/2001/XMLSchema-instance」)和一個由冒號分隔的本地名稱組成。

XmlSerializer.attribute()的呼叫應該將名稱空間URI指定爲第一個參數,並將本地名稱("noNamespaceSchemaLocation")指定爲第二個參數。

您還需要使用XmlSerializer.setPrefix("xsi", "http://www.w3.org/2001/XMLSchema-instance")將名稱空間前綴綁定到URI。

+0

我試過像這樣 serializer.setPrefix(「xsi」,「http://www.w3.org/2001/XMLSchema-instance」); serializer.startTag(null,「APPLICAD_EXPORT」); serializer.attribute(null,「noNamespaceSchemaLocation」,「file:/// c:/temp/applicad-export.xsd」); 但沒有得到所需的結果,而我得到這個

+0

恩,再次閱讀我的答案。 attribute()的第一個參數不應該爲null。 –

+0

謝謝你先生我已經嘗試了一些想這樣和m附近的結果 serializer.setPrefix(「xsi」,「http://www.w3.org/2001/XMLSchema-instance」); serializer.startTag(null,「APPLICAD_EXPORT」); serializer.attribute(「http://www.w3.org/2001/XMLSchema-instance」,「noNamespaceSchemaLocation」,「file:/// c:/temp/applicad-export.xsd」); –