javax StreamSource的目的是什么?

时间:2013-08-30 17:18:49

标签: java xml

我正在解析一个正在作为InputStream读入的xml文档,并且我已经看到example首先在javax.xml.transform.stream.StreamSource中对流进行分段。当我在读入流时解析流时,为什么会这样做? Java API的description没有帮助:“以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();

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

1 个答案:

答案 0 :(得分:8)

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

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