如何理解产生DOM输出的Java代码?

时间:2018-11-03 14:16:55

标签: java xml dom transformer

使用XML文件作为输入,我已经对其进行了解析并使用诸如删除节点,添加节点等基本功能对其进行了修改。我想以DOM树的形式输出最终文档。我已经找到了这段代码,但是很难真正理解每行的内容(即使在阅读每个函数的文档时也是如此)。

能否请举例说明其工作原理?

  private static void toString(Document newDoc) throws Exception{
        DOMSource domSource = new DOMSource(newDoc);
        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        StringWriter sw = new StringWriter();
        StreamResult sr = new StreamResult(sw);
        transformer.transform(domSource, sr);
        System.out.println(sw.toString());  
      }

Output

1 个答案:

答案 0 :(得分:0)

一个javax.xml.transform.Transformer转换(顾名思义)将一个javax.xml.transform.Source转换为一个javax.xml.transform.Result,可能在此过程中应用了XSL样式表。变压器周围的源代码行是

Transformer transformer = TransformerFactory.newInstance().newTransformer(); // line 3
transformer.transform(domSource, sr); // line 6

现在,您的代码示例中的源代码是什么?

...Document newDoc... // line 1
DOMSource domSource = new DOMSource(newDoc); // line 2

含义:读取javax.xml.transform.Source的{​​{1}}实现。

org.w3c.dom.Document是:

javax.xml.transform.Result

表示它是写入StringWriter sw = new StringWriter(); // line 4 StreamResult sr = new StreamResult(sw); // line 5 的{​​{1}}(由字符或字节流组成)。

最后,已写入javax.xml.transform.stream.StreamResult的结果将在控制台上输出:

java.io.StringWriter