首頁 > 後端開發 > php教程 > 【100分求助】请问PHP中如何判断两个XML节点是否相同

【100分求助】请问PHP中如何判断两个XML节点是否相同

WBOY
發布: 2016-06-23 14:00:59
原創
1546 人瀏覽過

请问各路大神,在XML节点 层次结构不确定的情况下,如何判断两个XML节点是否相同?
这里我们约定当节点存在子节点时,子节点的排列顺序不影响XML节点的判断。

例如有以下两个XML节点:
节点1:

<a>    <b><d>1</d></b>    <c>2</c></a>
登入後複製

节点2:
<a>    <c>2</c>    <b><d>1</d></b></a>
登入後複製

在我们现在的逻辑中,认为节点1和节点2是 相同的两个节点。

请问在PHP中有没有什么办法可以判断这两个节点是相同的呢?

谢谢!


回复讨论(解决方案)

$s =<<< XML<a>    <b><d>1</d></b>    <c>2</c></a><a>    <c>2</c>    <b><d>1</d></b></a>XML;$xml = simplexml_load_string($s);$t = $xml->xpath('///a');$t = array_map('objectToarray', $t);//print_r($t);var_dump($t[0] == $t[1]);function objectToArray($d) {   if (is_object($d)) {     $d = get_object_vars($d);   }  if (is_array($d)) {     return array_map(__FUNCTION__, $d);   } else {     return $d;   } }
登入後複製
登入後複製
bool(true)

T T 多谢版主!一个很好的思路~

$s =<<< XML<a>    <b><d>1</d></b>    <c>2</c></a><a>    <c>2</c>    <b><d>1</d></b></a>XML;$xml = simplexml_load_string($s);$t = $xml->xpath('///a');$t = array_map('objectToarray', $t);//print_r($t);var_dump($t[0] == $t[1]);function objectToArray($d) {   if (is_object($d)) {     $d = get_object_vars($d);   }  if (is_array($d)) {     return array_map(__FUNCTION__, $d);   } else {     return $d;   } }
登入後複製
登入後複製
bool(true)
我还想用phpQuery实现的 看你写出来了我就不贴出来了

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板