2013-08-30 30 views
9

Parsuję dokument XML, który jest odczytywany jako InputStream, i example Widziałem pierwszy etap strumienia w javax.xml.transform.stream.StreamSource. Dlaczego to robię, gdy mogę analizować strumień, gdy jest on odczytywany? Interfejs API języka Java description nie jest przydatny: "Działa jako właściciel transformacji Źródło w postaci strumienia znaczników XML."Jaki jest cel javax StreamSource

Przykład z 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(); 

Przykład bez 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(); 

Odpowiedz

7

jest abstrakcją, tak że ten sam kod analizowania może być wykorzystywane do różnych źródeł (uwaga: StreamSource realizuje Source):

Uzyskiwanie XML z pliku jest tylko jedna możliwość. Istnieją również implementacje Source dla DOM (DOMSource), SAX (SAXSource), StAX (StAXSource) i JAXB (JAXBSource).