Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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?
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>
<dcublisher>Zürich</dcublisher>
<dcublisher>ETH, Eidgenössische Technische Hochschule Zürich, IVT, Institut für Verkehrsplanung und Transportsysteme</dcublisher>
<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.
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