您的位置:首页 > 其它

XPath简单问题:为什么只有local-name()可以??

2007-09-24 10:19 483 查看

XPath简单问题:为什么只有local-name()可以??

楼主topken(topken)2005-11-10 23:25:01 在 .NET技术 / C# 提问
假如test.xml如下:

<root xmlns="http://www.xyz.zyx.com">

<description>something here</description>

<name>oneBody</name>

</root>

为什么我用:

XmlDocument doc = new XmlDocument();

doc.Load("test.xml");

XmlNode node=doc.SelectSingleNode(@"/root/name"); //根本取不到值,为Null

但是用:XmlNode node=doc.SelectSingleNode(@"/*[local-name()='root']/*[local-name()='name'");却反尔取得到值??

我试了加XmlNamespaceManger还是不行,请达人指教。

问题点数:100、回复次数:7Top

1 楼topken(topken)回复于 2005-11-10 23:27:40 得分 0

纠正:

但是用:XmlNode node=doc.SelectSingleNode(@"/*[local-name()='root']/*[local-name()='name']");却反尔取得到值??

少了一个“]”括号。

Top

2 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-11-10 23:32:19 得分 50

LocalName的意思就是不包含namespace前缀的,所以你能够正确匹配值!

我们知道任何变量都有需要唯一标示,也就是用namespace+localname,我们得到这个变量的时侯也应该用这样的qualtifiedName来得到他

所以你这个问题就很好解决了

如果你用默认namespace在前面也是能够匹配的Top

3 楼Sunmast(速马@Redmond, WA)回复于 2005-11-10 23:48:47 得分 40

try:

XmlDocument xmldoc = new XmlDocument();

xmldoc.Load("test.xml");

XmlNamespaceManager nm = new XmlNamespaceManager(xmldoc.NameTable);

nm.AddNamespace("NM", "http://www.xyz.zyx.com");

XmlNode node = xmldoc.SelectSingleNode("/NM:root/NM:name", nm);

Console.WriteLine(node.InnerXml);Top

4 楼topken(topken)回复于 2005-11-11 09:00:09 得分 0

谢谢了!!现在了解了,测试通过了。

但是还有一个疑问:在有默认命名空间的情况下也不可以吗??非要NM:XXX这样有前缀才行?

我只有一个默认命名空间,为什么还一定要加前缀,有没有方法不用加?Top

5 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-11-11 09:03:10 得分 0

因为还有一种情况是没有命名空间啊。

如果说默认命名空间可以省略,那么没有命名空间的情况就和她是一样的了。

你可以测试一下,把那个xmlns="..."去掉,你原来的代码就可以了。Top

6 楼ILoveRMB(我爱人民币)回复于 2005-11-11 09:03:58 得分 10

有名称空间就需要 有前缀的。

Top

7 楼topken(topken)回复于 2005-11-13 18:36:39 得分 0

不好意思,没及时结贴,

谢各位友情相助!!Top

相关问题

一个XPath的简单问题,急!!
XSL和XPath的简单问题
如何简单得到datatable的field name?
简单题:unsigned short name[32+1]————>name:array [0..33] of word,对吗?
哪位大侠帮忙解决XPath和命名空间的问题啊,应该是简单的,但是困扰了一天了。在线等。。。
哪位大侠帮忙用.net解决XPath和命名空间的问题啊,应该是简单的,但是困扰了一天了。在线等。。。
<% For Each name In Request.ServerVariables %> 的问题?应该挺简单的
简单问题:JSP中使用<%@ include file="file_name" %>出错
问一个简单的ID 和name区别的问题!
简单!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐