dtgv52982
2018-03-13 02:35
浏览 31

PHP / XPATH - 找到父母的先知和兄弟,并获得其“儿童”

I've been trying to figure this our for days, but I simply cannot seem to get it to work.

Let's say I have an XML file named test.xml like this:

<root>
    <itemList>
        <item>
            <name>A</name>
            <type>AAA</type>
        </item>
        <item>
            <name>B</name>
            <type>BBB</type>
        </item>
        <item>
            <name>C</name>
            <type>CCC</type>
        </item>
    </itemList>
</root>

From PHP, I use SimpleXMLElement to find the node with text BBB.

<?php 
$xmlStr = file_get_contents('test.xml');
$xml = new SimpleXMLElement($xmlStr);
$res = $xml->xpath('//type[contains(text(), "BBB")]/parent::*');

echo "{$res[0]->name} ({$res[0]->type})";
// Result: B (BBB)

Now, I'd like to find the preceding-sibling node of the parent, and get the child nodes' values like A (AAA), but I simply can't figure out how to do so.

Any help would be great.

Thanks.

图片转代码服务由CSDN问答提供 功能建议

我一直想把它弄清楚这几天,但我似乎无法让它发挥作用。< / p>

假设我有一个名为 test.xml 的XML文件,如下所示:

 &lt; root&gt; \  n&lt; itemList&gt; 
&lt; item&gt; 
&lt; name&gt; A&lt; / name&gt; 
&lt; type&gt; AAA&lt; / type&gt; 
&lt; / item&gt; 
&lt; item&gt; 
&lt; 名称&gt; B&lt; / name&gt; 
&lt; type&gt; BBB&lt; / type&gt; 
&lt; / item&gt; 
&lt; item&gt; 
&lt; name&gt; C&lt; / name&gt; 
&lt; type&gt; CCC&lt;  / type&gt; 
&lt; / item&gt; 
&lt; / itemList&gt; 
&lt; / root&gt; 
   
 
 

从PHP,我使用 SimpleXMLElement < / code>查找带有文本 BBB 的节点。

 &lt;?php 
 $ xmlStr = file_get_contents('test.xml');  
 $ xml = new SimpleXMLElement($ xmlStr); 
 $ res = $ xml-&gt; xpath('// type [contains(text(),“BBB”)] / parent :: *'); 
  
echo“{$ res [0]  - &g  t; name}({$ res [0]  - &gt; type})“; 
 // //结果:B(BBB)
   
 
 

现在,我 想找到 parent 前兄弟节点,并获得 child 节点的值,如 A(AAA)< / code>,但我根本无法弄清楚如何这样做。

任何帮助都会很棒。

谢谢。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题