从头开始 XMLEventWriter:如何发出 xmlns 属性?

发布于 2024-09-07 05:18:52 字数 411 浏览 5 评论 0原文

我正在尝试使用 StAX API 中的 XMLEventWriter 从头开始​​编写 XML 文档。

我不知道如何获取要发出的默认名称空间属性。

例如,默认命名空间 URI 字符串为“http://www.liquibase.org/ xml/ns/dbchangelog/1.9”。我希望它以 xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9" 形式出现在我的 XML 根元素中。

这里有什么神奇的配方? XMLEventWriter.setDefaultNamespace() 不起作用。

谢谢, 领主

I am trying to write an XML document from scratch using the XMLEventWriter from the StAX API.

I cannot figure out how to get the default namespace attribute to be emitted.

For example, the default namespace URI string is "http://www.liquibase.org/xml/ns/dbchangelog/1.9". I want that to be present in my XML root element as xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9".

What's the magic recipe here? XMLEventWriter.setDefaultNamespace() didn't work.

Thanks,
Laird

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

书信已泛黄 2024-09-14 05:18:52

使用属性 IS_REPAIRING_NAMESPACES设置此行为:

XMLEventFactory events = XMLEventFactory.newInstance();
QName bar = new QName("urn:bar", "bar");
XMLOutputFactory factory = XMLOutputFactory.newInstance();
factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
XMLEventWriter writer = factory.createXMLEventWriter(System.out);
writer.add(events.createStartDocument());
writer.setDefaultNamespace("urn:bar");
writer.add(events.createStartElement(bar, null, null));
writer.add(events.createEndDocument());
writer.flush();

上面的代码发出:

<?xml version="1.0"?><bar xmlns="urn:bar"></bar>

Use the property IS_REPAIRING_NAMESPACES to set this behaviour:

XMLEventFactory events = XMLEventFactory.newInstance();
QName bar = new QName("urn:bar", "bar");
XMLOutputFactory factory = XMLOutputFactory.newInstance();
factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
XMLEventWriter writer = factory.createXMLEventWriter(System.out);
writer.add(events.createStartDocument());
writer.setDefaultNamespace("urn:bar");
writer.add(events.createStartElement(bar, null, null));
writer.add(events.createEndDocument());
writer.flush();

The above code emits:

<?xml version="1.0"?><bar xmlns="urn:bar"></bar>
錯遇了你 2024-09-14 05:18:52

使用“写入*”而不是“设置*”

javax.xml.stream.XMLStreamWriter.writeDefaultNamespace(String)

Use "write*" instead of "set*"

javax.xml.stream.XMLStreamWriter.writeDefaultNamespace(String)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文