使用XmlSerializer编写XML并将前缀N0更改为NS1

时间:2014-12-03 11:03:12

标签: android xml xml-serialization

我正在使用XML

我试图在整个文档中设置NS1的前缀,所以我使用了:

    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也是侧面写的,但我希望将每个标签放在一个单独的行上:

<?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>

1 个答案:

答案 0 :(得分:0)

我也有这个问题,我用这种方式来解决。

尝试使用&#34;命名空间&#34;在setPrefix中定义。使用&#34;命名空间&#34; 代替&#34; 前缀&#34;作为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);

参考: