javax StreamSource的目的是什么

2022-09-04 22:08:42

我正在解析一个作为 InputStream 读取的 xml 文档,以及一个我在 javax.xml.transform.stream.StreamSource 中看到的第一阶段的示例。当我可以在读入流时解析流时,为什么这样做?Java API的描述没有帮助:“以XML标记流的形式充当转换源的持有者。

StreamSource 示例:

    XMLInputFactory xif = XMLInputFactory.newFactory();
    StreamSource reportStream = 
              new StreamSource(new URL("file:///myXmlDocURL.xml").openStream());
    XMLStreamReader xmlReader = xif.createXMLStreamReader(reportStream);
    xmlReader.nextTag();
    while (xmlReader.hasNext()) {
        if (xmlReader.getLocalName().equals("attributeICareAbout")) {
            String tempTagValue = xmlReader.getText();
            xmlReader.nextTag();
        }
    }
    xmlReader.close();

不带流源的示例:

    XMLInputFactory xif = XMLInputFactory.newFactory();        
    XMLStreamReader xmlReader = 
      xif.createXMLStreamReader(new URL("file:///myXmlDocURL.xml").openStream());
    xmlReader.nextTag();
    while (xmlReader.hasNext()) {
        if (xmlReader.getLocalName().equals("attributeIcareAbout")) {
            String tempTagValue = xmlReader.getText();
            xmlReader.nextTag();
        }
    }
    xmlReader.close();

答案 1

它是一种抽象,因此相同的解析代码可用于各种源(注意:实现):StreamSourceSource

从文件获取 XML 只是一种可能性。还有 DOM ()、SAX ()、StAX () 和 JAXB () 的实现。SourceDOMSourceSAXSourceStAXSourceJAXBSource


答案 2

推荐