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