Ich versuche, JDOM2 zu verwenden, um die Informationen aus einem XML-Dokument zu extrahieren. Wie erhalte ich ein Tag innerhalb eines Tags?JDOM2 XPath Findet Knoten in einem anderen Namespace
Ich war nur teilweise erfolgreich. Während ich in der Lage gewesen bin, xpath zu verwenden, um <record>
Tags zu extrahieren, hat die xpath-Abfrage, um den Titel, die Beschreibung und andere Daten mit den Record-Tags zu extrahieren, null zurückgegeben.
Ich habe Xpath erfolgreich verwendet, um <record>
Tags aus dem Dokument zu extrahieren. Dazu benutze ich die folgende xpath-Abfrage: "// oai: record", wobei der "oai" -Namespace ein Namespace ist, den ich erstellt habe, um xpath zu verwenden.
können Sie das XML-Dokument sehe ich hier bin Parsen, und ich habe eine Probe unten setzen: http://memory.loc.gov/cgi-bin/oai2_0?verb=ListRecords&set=cwp&metadataPrefix=oai_dc
<record>
<header>
<identifier>oai:lcoa1.loc.gov:loc.pnp/cph.3a02293</identifier>
<datestamp>2009-05-27T07:22:37Z</datestamp>
<setSpec>cwp</setSpec>
<setSpec>lcphotos</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:title>Jubal A. Early</dc:title>
<dc:description>This record contains unverified, old data from caption card.</dc:description>
<dc:date>[between 1860 and 1880]</dc:date>
<dc:type>image</dc:type>
<dc:type>still image</dc:type>
<dc:identifier>http://hdl.loc.gov/loc.pnp/cph.3a02293</dc:identifier>
<dc:language>eng</dc:language>
<dc:rights>No known restrictions on publication.</dc:rights>
</oai_dc:dc>
</metadata>
</record>
Wenn Sie in den größeren Dokument betrachten, werden Sie sehen, dass es nie eine „xmlns "Attribut auf einem der Tags aufgeführt. Es gibt auch die Frage, ob es im Dokument drei verschiedene Namespaces gibt ("none/oai", "oai_dc", "dc").
Was passiert ist, dass der Xpath nichts entspricht, und evaluateFirst (Eltern) gibt null zurück.
Hier ist ein Teil meines Codes, um den Titel, das Datum, die Beschreibung usw. aus dem Datensatzelement zu extrahieren.
XPathFactory xpf = XPathFactory.instance();
XPathExpression<Element> xpath = xpf.compile("//dc:title",
Filters.element(), null,
namespaceList.toArray(new Namespace[namespaceList.size()]));
Element tag = xpath.evaluateFirst(parent);
if(tag != null)
{
return Option.fromString(tag.getText());
}
return Option.none();
Irgendwelche Gedanken würden geschätzt werden! Vielen Dank.
Gibt es hier irgendwo eine Frage? Ich verstehe nicht was du fragst? – jtahlborn
Ich extrahiere den Inhalt von 'dc: title' aus' record'? – Prichmp
Ich weiß nicht über jdom tho, aber vorausgesetzt, Sie haben 'dc' auf den richtigen Namespace uri' http: // purl.org/dc/elements/1.1/'gemappt, ich denke, der XPath sollte funktionieren – har07