0
我在XML中有很多很多的paragraph
元素,在這些段落裏面經常有子元素,比如name
。我想運行一個xpath,它將返回子元素的值和父段落的xml:id
。理想的結果是某種數組,其中鍵是paragraph
元素的xml:id
,值是子元素name
的文本節點。任何想法如何我可以用一個單一的xpath完成這個?返回一對值的xpath(使用php)
目前,我正在嘗試類似的事情,涉及兩個xpaths,並試圖將兩者放在一起,但這是變得非常混亂,不工作。
$result_array = array();
$xmldoc = simplexml_load_file("$fullfilename");
$xmldoc->registerXPathNamespace("tei", "http://www.tei-c.org/ns/1.0");
$names = $xmldoc->xpath("//name");
foreach ($names as $name)
{
$pids = $xmldoc->xpath("//tei:p[tei:name='$name']/@xml:id")
$result_array[$name] = $pids[0]
}
我在這裏得到一個錯誤,說[$name]
是非法抵消。我也只是不認爲這會給我想要的東西,因爲我相信它總是會返回xml:id
的第一段,它的子值name
元素的值與輸入相匹配。但我想要的是該段落中找到該實例的段落xml:id值。
感謝您的幫助。
你爲什麼不嘗試https://code.google.com/p/phpquery/ ? – deadlock 2013-03-07 12:43:27
請將您的XMl添加到問題中 – JWiley 2013-03-07 13:07:15
嘗試更改'「// tei:p [tei:name ='$ name']/@ xml:id」'to'「// tei:p [tei:name = 「+ $ name」+「]/@ xml:id」' – JWiley 2013-03-07 13:16:28