我试图使用xpath匹配有默认命名空间的xml文档中的指定节点,看看有什么问题导致无法匹配。
XML文档如下
<AAA xmlns="http://www.citi.qut.edu.au/yawl">
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
程序如下:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace(string.Empty, "http://www.citi.qut.edu.au/yawl");
XmlNodeList nodes = doc.SelectNodes("//DDD",nsmgr);
XmlElement processControlElementsElem =(XmlElement) nodes[0];
结果是processControlElementsElem 为空,如果我把默认命名空间在xml文档中去除就可以匹配了。
XML文档如下
<AAA xmlns="http://www.citi.qut.edu.au/yawl">
<BBB/>
<CCC/>
<BBB/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC/>
</AAA>
程序如下:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace(string.Empty, "http://www.citi.qut.edu.au/yawl");
XmlNodeList nodes = doc.SelectNodes("//DDD",nsmgr);
XmlElement processControlElementsElem =(XmlElement) nodes[0];
结果是processControlElementsElem 为空,如果我把默认命名空间在xml文档中去除就可以匹配了。
解决方案 »
- 关于VS的版本
- Vs2010程序运行后显示无响应,报错为:无可用源
- repeater嵌套按钮
- show().和ShowDialog()有什么区别。为什么这个事件只能在SHOW里用?
- 查询数据的时候出现"超时时间已到。在操作完成之前超时时间已过或服务器未响应"
- .net程序如何实现多语言切换?
- DataGrid的一个简单问题
- 调用EXCEL有问题
- 面对面的技术交流,最快的答复,多角度思考,一个人的力量是有限的,请参与18834490群来讨论,集大家的力量.
- XML不支持GBK编码吗?
- 刚开始接触.net想好好学习一下.高手们给点建议好么
- Socket 客户端怪问题...很急 (加个MessageBox,就好了,去掉程序就死了)
不过要告诉你一点
<AAA xmlns="http://www.citi.qut.edu.au/yawl">
xmlns是属性值,属性值与节点名是不一样的
XmlNodeList nodes = doc.SelectNodes("//xx:DDD",nsmgr);