SAX parsen - Wie?

doi_project

Mitglied
Hallo zusammen! :)


Ich möchte mein erstes XML Dokument (Link) mit SAX parsen.

Ich habe mir das folgende Tutorial angeschaut und mit den Beispielen angefangen. Es scheint jedoch outdated zu sein, da Eclipse immer wieder Errors ausspuckt.

Kann mir jemand einen Ansatz (Tutorial?) geben, wie ich anfangen soll? :)
 

doi_project

Mitglied
Ok. Ich habe jetzt ein weiteres Tutorial zu SAX gefunden.

Ich habe jetzt beide Varianten in Eclipse eingegeben, jedoch bekomme ich für beide Fehlermeldungen.

1) SAXParser cannot be resolved to a type
2) The import com.ibm cannot be resolved

Was soll das?


Dann habe ich noch eine Frage, wie man den Filenamen eingibt.
Im Tutorial steht:
Code:
parser.parse(file);

Kann man anstatt 'file' eine URL eingeben? Wo (welche Directory?) muss sich die XML Datei befinden, damit sie eingelesen werden kann?
 
Zuletzt bearbeitet:

doi_project

Mitglied

Genau das war ich jetzt am Durchgehen.
Das Beispiel war meine Rettung - hat perfekt funktioniert :)


Jetzt habe ich es explizit für meine Anwendung benutzt.
Hier, mein XML File:
[XML]
<?xml version="1.0"?>
<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2011-10-09T11:54:21Z</responseDate>
<request verb="ListRecords" from="2011-09-14T08:02:38Z" metadataPrefix="oai_dc" set="DOI">http://aleph-prod.ethz.ch/OAI</request>
<ListRecords>
<record>
<header>
<identifier>oai:eth-bib-pub:EBI01-006080880</identifier>
<datestamp>2011-09-14T17:57:37Z</datestamp>
<setSpec>DOI</setSpec>
</header>
<metadata>
<oai_dc:dc xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:type>Printed language material</dc:type>
<dc:language>ger</dc:language>
<dc:identifier>10.3929/ethz-a-006080880 / doi</dc:identifier>
<dc:title>Grundlagen für eine differenzierte Bemessung von Verkehrsanlagen</dc:title>
<dc:publisher>Zürich</dc:publisher>
<dc:publisher>ETH, Eidgenössische Technische Hochschule Zürich, IVT, Institut für Verkehrsplanung und Transportsysteme</dc:publisher>
<dc:date>2008</dc:date>
<dc:format>Online-Datei</dc:format>
<dc:creator>Bernard, Michael</dc:creator>
<dc:creator>Axhausen, Kay W.</dc:creator>
<dc:contributor>e-collection 2010</dc:contributor>
<dc:identifier>http://e-collection.ethbib.ethz.ch/show?type=incoll&nr=1785</dc:identifier>
</oai_dc:dc>
</metadata>
</record>
</ListRecords>
</OAI-PMH>
[/XML]


Hier der dazugehörige (angepasste Code) - ich möchte nur mal das Root-Element ausgeben lassen:
Code:
public class LinkParser {
 
    public void getAllUserNames(String fileName) {
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            File file = new File(fileName);
            if (file.exists()) {
                Document doc = db.parse(file);
                Element docEle = doc.getDocumentElement();
 
                // Print root element of the document
                System.out.println("Root element of the document: "
                        + docEle.getNodeName());
             }
        } catch (Exception e) {
            System.out.println(e);
        }
    }


Und schon wieder gibt's 'ne komische Fehlermeldung:
org.xml.sax.SAXParseException: The reference to entity "nr" must end with the ';' delimiter.

Das bezieht sich auf 'nr' in der URL für 'dc:identifier' drin.
Wie soll ich das wegbringen?
 

doi_project

Mitglied

Ich versuche jetzt wie im Beispiel mein oben angegebenes Dokument zu parsen.
Ich möchte dabei die Elemente im Tag '<oai_dc:dc>' herauslesen.

Ich habe mal so angefangen (ich gebe die XML-Baumhierarchie Schritt-für-Schritt aus):

Code:
 Document doc = db.parse(file);
 Element docEle = doc.getDocumentElement();
 
 // Print root element of the document
 System.out.println("Root element of the document: " + docEle.getNodeName());
 
 NodeList ListRecords = docEle.getElementsByTagName("ListRecords");

 // Print second element of the document
 System.out.println("Second element of the document: " + ListRecords.item(0).getNodeName());


if (ListRecords != null && ListRecords.getLength() > 0) {
   for (int i = 0; i < ListRecords.getLength(); i++) {
 
        Node record = ListRecords.item(i);                        

        // Print third element of the document
        System.out.println("Third element of the document: " + record.getNodeName());
   }
} else {
   System.exit(1);
}

Der Output sieht jetzt folgendermassen aus:
Root element of the document: OAI-PMH
Second element of the document: ListRecords
Third element of the document: ListRecords

Was soll das?
Wieso heisst es zweimal 'ListRecords' und nicht 'Records' beim dritten Mal? ???:L
 
Zuletzt bearbeitet:

doi_project

Mitglied
Was soll das?
Wieso heisst es zweimal 'ListRecords' und nicht 'Records' beim dritten Mal? ???:L


Das habe ich jetzt auch alleine hingekriegt.
So sieht der neue Code aus:

Code:
    public void getAllRequiredValues(String fileName) {
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            File file = new File(fileName);
            if (file.exists()) {
                Document doc = db.parse(file);
                Element docEle = doc.getDocumentElement();
 
                // Print root element of the document
                System.out.println("Root element of the document: "
                        + docEle.getNodeName());
 
                NodeList ListRecords = docEle.getElementsByTagName("ListRecords");

                // Print second element of the document
                System.out.println("Second element of the document: "
                        + ListRecords.item(0).getNodeName());
 
                
                if (ListRecords != null && ListRecords.getLength() > 0) {
                    for (int i = 0; i < ListRecords.getLength(); i++) {
 
                        Node node1 = ListRecords.item(i);    
                        Element e1 = (Element) node1;
                        NodeList recordList = e1.getElementsByTagName("record");

                        
                        // Print third element of the document
                        System.out.println("Third element of the document: "
                                + recordList.item(0).getNodeName());
                        
                        
                        if (recordList != null && recordList.getLength() > 0) {
                            for (int j = 0; j < recordList.getLength(); j++) {
         
                                Node node2 = recordList.item(j);    
                                Element e2 = (Element) node2;
                                NodeList metadataList = e2.getElementsByTagName("metadata");

                                // Print fourth element of the document
                                System.out.println("Fourth element of the document: "
                                        + metadataList.item(0).getNodeName());
 
                                Node oai = metadataList.item(0);
                                
		                        if (oai.getNodeType() == Node.ELEMENT_NODE) {
		                             int entry = j+1;   
		                             System.out.println("========= Entry Nr. " + entry + " ============");
		   
		                             Element e3 = (Element) oai;
		   
		                             NodeList dcItemList = e3.getElementsByTagName("dc:identifier");
		                             System.out.println("Identifier: "
		                                      + dcItemList.item(0).getChildNodes().item(0)
		                                              .getNodeValue());

		                             dcItemList = e3.getElementsByTagName("dc:title");
		                             System.out.println("Title: "
		                                      + dcItemList.item(0).getChildNodes().item(0)
		                                              .getNodeValue());
		                             
		                             dcItemList = e3.getElementsByTagName("dc:identifier");
		                             System.out.println("Identifiers: "
		                                      + dcItemList.item(0).getChildNodes().item(0)
		                                              .getNodeValue() + " and "
		                                      + dcItemList.item(1).getChildNodes().item(0)
		                                              .getNodeValue());
		                             
		                             dcItemList = e3.getElementsByTagName("dc:publisher");
		                             System.out.println("Publisher: "
		                                      + dcItemList.item(0).getChildNodes().item(0)
		                                              .getNodeValue());
		                             
		                             dcItemList = e3.getElementsByTagName("dc:date");
		                             System.out.println("Date: "
		                                      + dcItemList.item(0).getChildNodes().item(0)
		                                              .getNodeValue());

		                             System.out.println("=====================");
		                             
		                          }
                                
                            }
                        } else {
                            System.exit(1);
                        }

                        
                        


                                
                    }
                } else {
                    System.exit(1);
                }
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }


Die Frage ist nach wie vor - wie verarbeite ich die URL im XML-Dokument mit escapeXml?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Buch Metadaten aus XML Datei parsen XML & JSON 48
S XML Document Parsen und Ausgeben mit Suchfunktion XML & JSON 21
M parsen von realen HTML-WEB-Seiten XML & JSON 1
MiMa parsen mit regex -> ein schnelles Ende XML & JSON 10
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
F Parsen von Daten aus einer Homepage XML & JSON 6
G Langsam beim SAX-Parsen - woran liegts? XML & JSON 2
C Parsen des XML-Streams mit SAX XML & JSON 3
M XML Datei Parsen XML & JSON 4
S XML Parsen und Werte zwischenspeichern XML & JSON 2
K Kurze XML Datei Parsen XML & JSON 5
whitenexx Problem beim parsen von Facebook XML XML & JSON 3
J Comments in XML parsen XML & JSON 3
H Nicht wohlgeformtes XML mit SAX parsen XML & JSON 2
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
Z XML parsen - Element mit Werten XML & JSON 2
ruutaiokwu xml nur bis auf eine bestimmte ebene parsen mit javax.xml... XML & JSON 5
L [SAX] Geschachtelte XML Datei parsen XML & JSON 3
R XML in UTF-8 mit SAX parsen XML & JSON 9
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
F Probleme beim html parsen mit tagsoup XML & JSON 4
M Probleme beim Parsen eines gefilterten XML-Dokuments XML & JSON 6
Semox Kann JUnit XML Parsen? XML & JSON 2
L Reihenfolge beim xml Datei parsen einhalten? XML & JSON 8
L xml Datei parsen ohne End-Tag XML & JSON 6
T RSS-Feed parsen und in Datenbank speichern XML & JSON 6
B XML parsen XML & JSON 3
H XML parsen und unbekannten Namespace zurückgeben XML & JSON 5
L invalide xml document parsen?! XML & JSON 2
S DOM Parsen Problem mit HTML Sonderzeichen XML & JSON 4
ABstraCT XML properties am einfachsten parsen. XML & JSON 2
U xmi parsen über emf XML & JSON 10
S XML-Schema einlesen um parsen zu erleichtern? XML & JSON 2
T Problem beim Parsen von Attribut xmlns="urn:com:test&qu XML & JSON 6
P XMLGregorianCalender parsen XML & JSON 4
M Datei parsen XML & JSON 5
S HTML mit dom4j parsen? XML & JSON 2
X XML File auslesen/parsen u. in ne Hashmap speichern XML & JSON 2
Saxony unbekannte XML Datei parsen und ausgeben XML & JSON 10
P "Formatierungs-Tags" parsen XML & JSON 3
M Attribute parsen XML & JSON 6
R Parsen einer XML ohne Validierung XML & JSON 2
D XML Datei innerhalb einer JAR Datei parsen XML & JSON 2
M Xerces -Parsen mit einer externen Schemadatei geht nicht XML & JSON 2
L bz2-Datei parsen XML & JSON 9
K XML parsen Whitespaces XML & JSON 2
I XML-String mit SAX parsen ? XML & JSON 2
M Object in XML parsen XML & JSON 2
byte Probleme beim Parsen von XHTML-Datei XML & JSON 4
P HTML Seite Parsen, und bestimmten Text extrahieren XML & JSON 3
X xml und xsl parsen mit xerces XML & JSON 8
W Xml-String parsen XML & JSON 2
W root element parsen,Hilfe! XML & JSON 5
F Gibt es Möglichkeiten Deutsche Sätze zu parsen ? XML & JSON 2
A Auf der Suche nach Bibliotheken oder wie parsen? XML & JSON 15
S XML Datei mit Schemafehler parsen XML & JSON 14
R StreamSource parsen ! XML & JSON 8
R RSS parsen XML & JSON 2
K XML Datei parsen XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben