我正在用 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)