Ben bir XML belgesinden önemli olan bilgileri ayıklamak için JDOM2'yi kullanmaya çalışıyorum. Bir etiket içinde nasıl etiket alabilirim?JDOM2 xpath farklı bir ad alanı içinde düğümleri bulma
Sadece kısmen başarılı oldum. <record>
etiketlerini ayıklamak için xpath kullanabildiğim halde, kayıt etiketlerindeki başlığı, açıklamayı ve diğer verileri ayıklamak için xpath sorgusu sıfırlandı.
Xpath'i belgeden çıkarıp <record>
etiketlerini ayıklamak için kullanıyorum. Bunu yapmak için follwing xpath sorgusunu kullanıyorum: "// oai: record", "oai" ad alanının xpath kullanabilmek için oluşturduğum bir ad alanı.
Sen burada ayrıştırma XML belgesini görebilir ve bir örnek aşağıda koyduk: Daha büyük belgede bakarsak 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>
bir "xmlns orada hiç olduğunu göreceksiniz "etiketlerden herhangi birinde listelenen özellik. Belgedeki üç farklı isim alanının olması da söz konusudur ("none/oai", "oai_dc", "dc").
Oluyor olan, xpath öğesinin hiçbiriyle eşleşmediği ve evalFirst (parent) öğesi null döndürüyor olmasıdır.
Kayıt kodunun başlığını, tarihini, açıklamasını vb. Ayıklamak için kodumdan bazılarını burada bulabilirsiniz.
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();
Herhangi bir düşünce takdir edilecektir! Teşekkürler.
Burada bir yerde bir soru var mı? ne sorduğunu anlamıyorum – jtahlborn
"dc: title" öğesinin içeriğini "record" dan çıkarırım? – Prichmp
Ben jdom tho hakkında bilmiyorum, ama doğru ad alanına dc dc: http: // purl.org/dc/elements/1.1/'eşlediğini varsayarak, XPath – har07