Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1506744
  • 博文数量: 164
  • 博客积分: 2993
  • 博客等级: 少校
  • 技术积分: 1718
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-24 11:42
文章分类

全部博文(164)

文章存档

2014年(1)

2013年(36)

2012年(90)

2011年(37)

分类: Python/Ruby

2012-12-14 13:14:58

而昨晚在使用 XPATH 的时候, 遇到一个问题, 改了一个晚上才搞定, 差点没吐血. 果然基础知识要掌握扎实啊!!

假设有以下一份 XML 文档:

我们要获取所有歌曲的标题, 一般是使用以下的 XPATH 表达式:

  1. /playlist/trackList/track/title


但是匹配的结果会让你非常失望, 你会发现什么也得不到. 于是我在这个问题上卡了好几个小时, 最终万能的 Google 告诉了我答案.

在第二行 playlist 那个节点, 有一个 XMLNS 属性, 这个是 XML 的命名空间 (Namespace), 就是因为这个属性的存在, 所以我们上面的 XPATH 就无效了. 怎么办? 答案是在程序中为我们的 XML 注册命名空间.

使用 PHP 给 XML 注册命名空间和获取歌曲标题:  

  1. $xml = simplexml_load_file('music.xml');
  2. $xml->registerXPathNamespace('x','');
  3. $xpath = '/x:playlist/x:trackList/x:track';
  4. $result = $xml->xpath($xpath);
  5. foreach($result as $row){
  6. echo $row->title;
  7. }


 

阅读(1075) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~