java - javax StreamSource 的目的是什么

标签 java xml

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

流源示例:

    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();

没有 StreamSource 的例子:

    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();

最佳答案

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

从文件中获取 XML 只是一种可能性。还有 Source 的实现,用于 DOM (DOMSource)、SAX (SAXSource)、StAX (StAXSource)、和 JAXB(JAXBSource)。

关于java - javax StreamSource 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18538288/

相关文章:

Java Semaphore Await Idleness对其他线程有影响吗?

xml - 使用 XSLT 用 href 属性包装所有元素

xml - LINQ 到 XML : parsing XML file which one of nodes presents type of another node

c++ - 在 C++ 中支持基于模式的不断发展的 XML 的技术

sql-server - SQL Server XML DML 未声明的前缀

java - 在具有多个参数类型约束的 Kotlin 中调用具有泛型类型的方法

java - 验证 Java 中反射方法的返回类型和参数

java - 如何从扫描仪返回有效输入?

java - 为什么共享变量会缓存在CPU缓存中?

android - 获取二进制 XML 文件行 #141 : Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference