我正在解析一个作为 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
):
- XMLInputFactory.createXMLStreamReader(Source)
- Validator.validate(Source)
- Transformer.transfrom(Source, Result)
- Unmarshaller.unmarshal(Source, Class)
从文件中获取 XML 只是一种可能性。还有 Source
的实现,用于 DOM (DOMSource
)、SAX (SAXSource
)、StAX (StAXSource
)、和 JAXB(JAXBSource
)。
关于java - javax StreamSource 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18538288/