源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)

  • 时间:2020-09-28 12:42 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
而昨晚在使用 XPATH 的时候, 遇到一个问题, 改了一个晚上才搞定, 差点没吐血. 果然基础知识要掌握扎实啊!! 假设有以下一份 XML 文档: [img]http://files.jb51.net/upload/201105/20110514161841228.png[/img] 我们要获取所有歌曲的标题, 一般是使用以下的 XPATH 表达式:
[u]复制代码[/u] 代码如下:
/playlist/trackList/track/title
但是匹配的结果会让你非常失望, 你会发现什么也得不到. 于是我在这个问题上卡了好几个小时, 最终万能的 Google 告诉了我答案. 在第二行 playlist 那个节点, 有一个 XMLNS 属性, 这个是 XML 的命名空间 (Namespace), 就是因为这个属性的存在, 所以我们上面的 XPATH 就无效了. 怎么办? 答案是在程序中为我们的 XML 注册命名空间. 使用 C# 给 XML 注册命名空间和获取歌曲标题:
[u]复制代码[/u] 代码如下:
XmlDocument xml = new XmlDocument(); xml.Load("music.xml"); XmlNamespaceManager xnm = new XmlNamespaceManager(xml.NameTable); xnm.AddNamespace("x", "http://xspf.org/ns/0/"); string xpath = "/x:playlist/x:trackList/x:track/x:title"; foreach (XmlNode xn in xml.SelectNodes(xpath, xnm)) { Console.WriteLine(xn.InnerText); }
使用 PHP 给 XML 注册命名空间和获取歌曲标题:
[u]复制代码[/u] 代码如下:
$xml = simplexml_load_file('music.xml'); $xml->registerXPathNamespace('x','http://xspf.org/ns/0/'); $xpath = '/x:playlist/x:trackList/x:track'; $result = $xml->xpath($xpath); foreach($result as $row){ echo $row->title; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部