java - XMLEventWriter 从头开始​​ : how do I emit xmlns attribute?

标签 java xml xml-namespaces stax

我正在尝试使用 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() 不起作用。

谢谢, 莱尔德

最佳答案

使用属性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>

关于java - XMLEventWriter 从头开始​​ : how do I emit xmlns attribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119619/

相关文章:

java - 在运行时替换 Java 对象

java - 轴 2 WS-互操作性基本配置文件 1.1

c# - 了解 WCF 响应中的 xmlns 标记

android - 从 XML 导入时如何使命名导入成为默认行为?

java.util.Timer - 事件之间的速度不一致?

java - JFMI,标量变量的数量,传递字符串

xml - 在 Inno Setup 中运行 schtask.exe 之前创建带有安装路径的 XML 任务文件

xml - 使用 Kotlin 解析 XML?

php - anchor 在列内对齐

c++ - gsoap : how to solve namespace error when referencing a group