将冒号(:)放在xml属性中

时间:2015-12-22 04:45:03

标签: java android xml attributes xmlserializer

我正在研究android项目,在某些任务中我需要创建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 个答案:

答案 0 :(得分:2)

冒号是特殊的:您的属性名称由命名空间前缀(在这种情况下是#34; http://www.w3.org/2001/XMLSchema-instance&#34;)的简写名称和本地名称组成,由结肠。

您对XmlSerializer.attribute()的调用应将名称空间URI指定为第一个参数,将本地名称("noNamespaceSchemaLocation")指定为第二个参数。

您还需要使用XmlSerializer.setPrefix("xsi", "http://www.w3.org/2001/XMLSchema-instance")将名称空间前缀绑定到URI。