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

Ram*_*dal 2 java xml android attributes xmlserializer

我正在开发 android 项目,在任务的某些部分我需要创建 xml 文档文件。我需要像这样创建包含冒号的属性

<APPLICAD_EXPORT xsi:noNamespaceSchemaLocation="file:///c:/temp/applicad-export.xsd">
Run Code Online (Sandbox Code Playgroud)

我可以成功创建 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");
Run Code Online (Sandbox Code Playgroud)

但它显示错误说属性 xsi 的规范强制值

我想可能有某种方法可以实现这一目标,但我无法弄清楚。

Mic*_*Kay 6

冒号很特殊:您的属性名称由命名空间前缀(这是命名空间 URI 的简写,在本例中为“ http://www.w3.org/2001/XMLSchema-instance ”)和本地名称组成,分隔开通过冒号。

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

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