我正在解析一个正在作为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();
答案 0 :(得分:8)
它是一个抽象,因此相同的解析代码可用于各种来源(注意:StreamSource
实现Source
):
从文件中获取XML只是一种可能性。对于DOM(Source
),SAX(DOMSource
),StAX(SAXSource
)和JAXB(StAXSource
),还有JAXBSource
的实现。