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区别的问题!
简单!
相关文章推荐
- C++ 类的定义问题,为什么只有const static 整型变量才可以在类中定义并复赋值?
- select * from (select * from tablename) 不可以 问题解决
- C++为什么可以进行函数重载以及引起的二义性问题
- 自由是有代价的:聊聊这几年尝试的道路 要想生活好,别看哲学书和思想书。简单看看可以,看多了问题就大了。还是要去研究研究些具体的问题。别jb坐在屋子里,嘴里念着海子的诗,脑袋里想康德想的事情,兜里屁都没有,幻想自己是大国总理,去想影帝是怎么炼成的。
- 一道可以成为.NET面试“必杀题”的“简单问题”
- 小问题可能存在大问题,希望大神帮忙解答。Spark本地运行模式中单线程与多线程问题之setMaster("local")可以运行,但是设置成setMaster("local[3]")或setMaste
- //栈//为什么我总把简单的问题搞那么复杂?//Ignatius Train Station------二X
- inherited 为什么可以调用父类的private函数? [问题点数:100分,结帖人:h2plus0]
- java为什么只有实现了Serializable接口才可以序列化
- 使用Ajax.net遇到的问题-使用会话时提示错误"只有在配置文件或 Page 指令中将启用会话状态设置为真时,才可以使用会话状态
- SVM解释为什么可以约束min y(wx+b)=1的问题
- 设置SharePoint任务列表只有分配者可以审批的一种简单、灵活的方法
- C#.Net里面通过事件调用事件,通过简单了解相信可以帮你解决问题
- 只有一个公网IP也可以使用LVS的DR模式!(外带php session粘滞问题解决)
- 看到的人过来帮帮忙啊!!!纠结的触摸屏移植问题(为什么别人可以,我不行呢)
- wamp下PHP报错,MySQL数据库插入数据乱码可以设置一下header解决简单问题
- JAVA中BCD码的转化问题:原来可以这么简单
- 为什么交叉熵损失可以提高具有sigmoid和softmax输出的模型的性能,而使用均方误差损失则会存在很多问题
- 为什么普通U盘都只有一个分区,而移动硬盘却可以有多个分区
- 简单的括号匹配问题,只有 ( 和 )。。。其实原理就是开栈最后的状态。。。