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

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

假设有以下一份 XML 文档:

我们要获取所有歌曲的标题, 一般是使用以下的 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;
}

时间: 2024-12-02 03:56:25

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

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

原文:操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP) 不管是用 PHP 还是 C#, 在操作 XML 的时候我们除了一个节点一个节点去取值之外, 还有一个非常方便的表达式, 就是 XPATH    而昨晚在使用 XPATH 的时候, 遇到一个问题, 改了一个晚上才搞定, 差点没吐血. 果然基础知识要掌握扎实啊!! 假设有以下一份 XML 文档:     我们要获取所有歌曲的标题, 一般是使用以下的 XPATH 表达式: 代码如下: /playlist/trackList/tr

[Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档

[Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档 楼主  发表于 2013-5-21 22:00:51 | 查看: 475| 回复: 0 使用DOM创建和操作XML文档 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语 在上一节中我们用手写的方法建立了一个XML文档,并且用DOM的方法对其进行了读取.现在我们使用代码来创建那个XML文档,并且对它实现查找.更新.插入等操作. 环境:Windows Xp + Qt 4.8.4+QtCreator 2.6.2

php中操作xml文档程序代码

 代码如下 复制代码   /* <?xml version="1.0" encoding="UTF-8"?> <班级> <学生 number="101"> <名字>孙悟空</名字> <名字>孙行者</名字> <年龄>猴精猴精</年龄> <介绍></介绍> </学生> <学生 number="

js 操作xml文档

js 操作xml文档 <script type="text/javascript">   <!--         var xml='<province><city id="520100" name="贵阳" /><city id="520200" name="六盘水" /><city id="520300" name=&quo

JDOM操作XML文档

  解析 xml文档的接口技术有很多 ,DOM  JDOM  SAX  ..其中JDOM技术是最简单的操作,代码操作比DOM  SAX少很多 . 关于这三种技术的介绍可以去网上查询一下. SAX是基于事件响应的 (没用过) . DOM是java官方的标准,我们在操作xml的时候其实是在内存中构建了一棵文档树,对于较小的xml文档可以使用dom处理,但是对于数据量比较大的XML文档,DOM比较耗费内存. JDOM是一个开源的项目,融合了DOM和SAX技术 ,轻量级的API可以方便的操作XML文档,

JDOM操作XML文档高级篇XML验证,创建带名字空间的xml, xml文档的修改

下面我通过几个例子来实现JDOM来操作XML文档: 1. xml文档的验证 DTD   我们经常使用XML来验证文档的合法性.  我们需要在xml的开头引入  <!DOCTYPE rootName SYSTEM "xxx.dtd">   这里的PUBLIC 引入的是私有DTD也就是我们自己定义的 .我们平时使用这种即可 . 另一种是   <!DOCTYPE rootName PUBLIC  ".........">这个是ISO标准的DTD 

java 操作word 文档现在有没有什么好的方法?

问题描述 急求 java 操作word 文档现在有没有什么好的方法? 解决方案 用jacobhttp://sourceforge.net/projects/jacob-project/解决方案二:你是要操作word里面的数据吗?如果是,你可以使用poi包,这个百度就可以下到的,而且对应的百度教程很多,列子很详细.PS:注意看看是否需要区别03和07版本问题解决方案三:刚刚看了一下,你可以看看这个博客http://rensanning.iteye.com/blog/1538689

Word文档网页无法复制保存的解决方法

  无论是学生还是工作的人对查资料都是避无可避的,工作中的一切都需要摸索与学习,有些还需要整理文献资料,对于电脑操作系统中的复制操作都是非常熟悉因为它操作简单方便,无论是左击选中还是使用键盘快捷键,都特别简单,不用一个个打字节省了不少时间.但是win7系统最近对于保存下来的网页,用两种方法均无法复制,一般用户遇到这样的情况只会老老实实打字输入,下面小编就向没有电脑技术基础的用户介绍windows系统Word文档网页被限制无法复制的解决方法. Word文档网页无法复制保存的解决方法 方法一: 1.

win7系统关闭Word 2007文档出现“已停止工作”的解决方法

  1.关闭所有office软件,如word.power point.excel等,复制上面的代码,同时按下win和R键,打开运行界面,把刚才复制的代码粘贴进去,然后确定;删掉normal.dotm文件,重新打开word软件,再关闭,看看关闭是否正常,如果还未解决,继续进行下一步; 文档出现"已停止工作"的解决方法-系统ui已停止怎么解决"> 2.继续打开运行界面(win+R),在输入窗口输入regedit,打开注册表;双击"HKEY_CURRENT_USER