小编Noo*_*pta的帖子

在 Java 中将 XML DOM 打印为字符串时将前缀传播到子元素

我正在用 Java 中的 DOM api 创建一个 XML,如下所示

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element root = document.createElement("root");
document.appendChild(root);
Element one = document.createElementNS("http://ns1", "one");
root.appendChild(one);
one.setPrefix("ns1");

Element two = document.createElementNS("http://ns1", "two");
one.appendChild(two);
Run Code Online (Sandbox Code Playgroud)

当使用以下代码打印上述 DOM 时,会在所有元素上生成命名空间声明(在这种情况下,在元素一和二上)。我如何确保命名空间声明的前缀是继承的,并且转换器不会在每个元素上重新声明它们 -

代码:

public static String transformDOMtoText(final org.w3c.dom.Node domElement) throws TransformerException {

 final Transformer transformer = getTransformer();
 final DOMSource domSource = new DOMSource(domElement);

 final StringWriter stringWriter = new StringWriter();
 final StreamResult result = new StreamResult(stringWriter);
 transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$ //$NON-NLS-2$
 transformer.setOutputProperty(
   OutputKeys.OMIT_XML_DECLARATION, …
Run Code Online (Sandbox Code Playgroud)

java xml dom xml-namespaces

5
推荐指数
1
解决办法
3070
查看次数

标签 统计

dom ×1

java ×1

xml ×1

xml-namespaces ×1