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

php中文网
发布: 2016-06-23 14:00:59
原创
1661人浏览过

请问各路大神,在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中有没有什么办法可以判断这两个节点是相同的呢?

谢谢!

通义万相
通义万相

通义万相,一个不断进化的AI艺术创作大模型

通义万相 596
查看详情 通义万相

回复讨论(解决方案)

$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速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号