13

私は、読み込まれた xml ドキュメントを InputStream として解析しています。最初に見たでは、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();

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

1 に答える 1

10

これは抽象化されているため、同じ解析コードをさまざまなソースに使用できます (注: StreamSource実装Source):

ファイルから XML を取得することは、1 つの可能性にすぎません。Sourcefor DOM ( DOMSource)、SAX ( SAXSource)、StAX ( StAXSource)、および JAXB ( )の実装もありますJAXBSource

于 2013-08-30T17:26:47.597 に答える