2015-12-22 65 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”); –