手机
当前位置:查字典教程网 >编程开发 >C#教程 >操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
摘要:而昨晚在使用XPATH的时候,遇到一个问题,改了一个晚上才搞定,差点没吐血.果然基础知识要掌握扎实啊!!假设有以下一份XML文档:我们要获取...

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

假设有以下一份 XML 文档:

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

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

复制代码 代码如下:

/playlist/trackList/track/title

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

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

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

复制代码 代码如下:

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 注册命名空间和获取歌曲标题:

复制代码 代码如下:

$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;

}

【操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)】相关文章:

C# 操作XML文档 使用XmlDocument类方法

使用Npoi操作excel的解决办法

AjaxControlToolkit AjaxFileUpload 显示英文改成中文的解决方法

C#操作config文件的具体方法

C#中计算时间差中的小数问题解决

C#操作目录与文件的方法步骤

基于使用递归推算指定位数的斐波那契数列值的解决方法

新手学习.net的一列好走的路径及方法

C#利用com操作excel释放进程的解决方法

HTML文本框的值改变后触发后台代码的方法

精品推荐
分类导航