私はXML文書から気になる情報を抽出するためにJDOM2を使用しようとしています。タグ内でタグを取得するにはどうすればよいですか?JDOM2 xpath異なる名前空間内のノードを見つける
私は部分的にしか成功しませんでした。私は<record>
タグを抽出するためにxpathを使用することができましたが、レコードタグにタイトル、説明、その他のデータを抽出するxpathクエリはnullを返しています。
Xpathを使用して、文書から<record>
タグを抽出しました。これを行うには、次のxpathクエリを使用します。 "oai:record"ここで、 "oai"名前空間はxpathを使用するために作成した名前空間です。あなたが大規模文書を見ると、あなたが「のxmlnsは決してありませんことがわかります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>
:
あなたは私がここで解析していたXML文書を見ることができる、と私は下のサンプルを入れています"属性は、いずれかのタグにリストされています。ドキュメントには3つの異なる名前空間が存在するという問題もあります( "none/oai"、 "oai_dc"、 "dc")。
何が起こっているかは、xpathが何も一致しておらず、evaluateFirst(parent)がnullを返すということです。
ここに、レコード要素のタイトル、日付、説明などを抽出するためのコードをいくつか示します。
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();
どのようなご意見もありがとうございます!ありがとう。
ここにどこか質問がありますか?私はあなたが何を求めているのか理解していないのですか? – jtahlborn
'dc:title'の内容を' record'の中から抽出しますか? – Prichmp
jdom thoについてはわかりませんが、適切な名前空間uri 'http://purl.org/dc/ elements/1.1 /'に 'dc'をマップしたと仮定すると、XPathは正しく動作するはずです – har07