我在使用Jaxen進行Xpath評估時遇到了大問題。OAI Jaxen XPath問題
以下是我正在評估對XML的一部分:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2011-05-31T13:04:08+00:00</responseDate>
<request metadataPrefix="oai_dc" verb="ListRecords">http://citeseerx.ist.psu.edu/oai2</request>
<ListRecords>
<record>
<header>
<identifier>oai:CiteSeerXPSU:10.1.1.1.1484</identifier>
<datestamp>2009-05-24</datestamp>
</header>
<metadata>
<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:title>Winner-Take-All..</dc:title>
<dc:relation>10.1.1.134.6077</dc:relation>
<dc:relation>10.1.1.65.2144</dc:relation>
<dc:relation>10.1.1.54.7277</dc:relation>
<dc:relation>10.1.1.48.5282</dc:relation>
</oai_dc:dc>
</metadata>
</record>
<resumptionToken>10.1.1.1.2041-1547151-500-oai_dc</resumptionToken>
</ListRecords>
</OAI-PMH>
我因爲在我的使用情況下,它的速度更快,然後執行的Apache使用Jaxen的。我使用W3C DOM來表示XML。
我需要選擇所有記錄參數,然後在選定的節點上評估其他xpath(因爲我的處理架構而需要它)。
我選擇的所有記錄節點(這工作):
/OAI-PMH/ListRecords/record
然後我評估其他的XPath獲得所需的數據每個選定的記錄節點上:
選擇標識符文本值(此作品):
header/identifier/text()
選擇標題文本值(不工作):
metadata/oai_dc:dc/dc:title/text()
我已經註冊了名稱空間前綴及其URI(oai_dc和dc)。我也嘗試過其他的XPath但他們沒有工作:
metadata/dc/title/text()
metadata//dc:title/text()
我讀過有關的XPath,命名空間和解決其他問題計算器加前綴「OAI」與URI「http://www.openarchives.org/ OAI/2.0 /」。我試圖向沒有定義前綴的節點添加「oai:」前綴,但結果我甚至沒有選擇記錄節點。任何想法我做錯了什麼?
解決方案: 問題是有關解析器(謝謝jasso)。它沒有設置爲名稱空間感知 - 更改設置後,一切正常,如預期。
我知道,這對我來說也很奇怪。我已經閱讀過Jaxen常見問題解答 - 對我沒有幫助 – Daimon 2011-05-31 21:19:59
我不能不同意Dr. Kay,但是如果解析器沒有設置爲名稱空間,並且因此'/ OAI-PMH/ListRecords/record'可以選擇某些東西文檔對象沒有任何名稱空間節點。再次,在這種情況下,這實際上是一個解析器問題,而不是XPath問題。所以重點是:@Daimon,向我們展示代碼;如何解析XML,如何註冊名稱空間以及如何執行XPath表達式。 – jasso 2011-05-31 21:28:14
謝謝jasso!問題是關於解析 - 解析器沒有設置爲名稱空間感知。 – Daimon 2011-05-31 21:43:05