【问题标题】:How to understand this Java code that produces DOM output?如何理解这个产生 DOM 输出的 Java 代码?
【发布时间】:2019-04-07 12:02:16
【问题描述】:

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

【问题讨论】:

    标签: java xml dom transformer


    【解决方案1】:

    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
    

    含义:读取org.w3c.dom.Documentjavax.xml.transform.Source实现。

    javax.xml.transform.Result 是:

    StringWriter sw = new StringWriter(); // line 4
    StreamResult sr = new StreamResult(sw); // line 5
    

    意思是javax.xml.transform.stream.StreamResult(由字符或字节流组成)写入java.io.StringWriter

    最后在控制台输出已经写入java.io.StringWriter的结果:

    System.out.println(sw.toString()); // line 7
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2015-08-02
      • 1970-01-01
      • 2013-08-22
      • 2016-04-12
      • 1970-01-01
      • 2013-09-10
      相关资源
      最近更新 更多