writeStartElement有provide namespaceURI,为什么需要另一个writeNamespace?

时间:2011-07-11 08:50:21

标签: java xml stax

代码:

XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = outputFactory.createXMLStreamWriter(System.out);
writer.writeStartDocument("1.0");
writer.writeCharacters("\n");
writer.writeStartElement("ns1", "sample", "http://www.e.com/ns1");
writer.writeNamespace("ns1", "http://www.e.com/ns1");
writer.writeEndElement();
writer.writeEndDocument();

结果是:

<?xml version="1.0"?>
<ns1:sample xmlns:ns1="http://www.e.com/ns1"/>

如果我删除writer.writeNamespace("ns1", "http://www.e.com/ns1");,则结果为

<?xml version="1.0"?>
<ns1:sample/>

namespaceURI的{​​{1}}参数会产生什么影响?

1 个答案:

答案 0 :(得分:1)

以下语句也为您做前缀绑定:

writer.writeStartElement("ns1", "sample", "http://www.e.com/ns1");

如果您在不指定前缀的情况下使用语句,则会知道前缀应为ns1

writer.writeStartElement("http://www.e.com/ns1", "sample2");
writer.writeEndElement();

对于writeNamespace,您仍然需要自己编写名称空间声明。