标签:aa nsmgr doc XmlDocument SelectNodes 域名空间 查找 var Response
在Xml中SelectSingleNode方法,xpath查找某节点用法 - bxzjzg - 博客园 (cnblogs.com)帖子钟,给出了多种查找节点的方法。
这些方法,部分方法是不成功的,但仅限于读取没有域名空间的XML文件。如果XML文件中带有域名空间,则没有办法读出来。
读取带有域名空间的XML文件,需要在SelectNodes或者SelectSingleNode携带域名空间管理器对象XmlNamespaceManager查找,官方定义为:
public XmlNodeList SelectNodes(string xpath, XmlNamespaceManager nsmgr);
下面给出使用案例。
1. 假设要访问的数据如下:
1 <?xml version="1.0"?> 2 <PIM> 3 <Responses Legacy="FALSE"> 4 <Response Action="SetTxFreqs" Units="" /> 5 <Response Action="GetImFreqs" Units="MHz"> 6 <Double>1870.00</Double> 7 <Double>1810.00</Double> 8 <Double>1750.00</Double> 9 <Double>1690.00</Double> 10 </Response> 11 <Response Action="GetImPower" Units="dBm"> 12 <Double>-115.85</Double> 13 <Double>-200.00</Double> 14 <Double>-200.00</Double> 15 <Double>-200.00</Double> 16 </Response> 17 </Responses> 18 </PIM>
2.以下为测试代码:
XmlDocument doc = new XmlDocument(); doc.Load("PimResponseDemo1.xml"); XmlNode root = doc.DocumentElement; //定义域名空间 XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("aa", "http://www.kaelus.com"); var list1 = doc.SelectNodes("aa:PIM/aa:Responses/aa:Response", nsmgr);//完整路径查找,成功 var list2 = doc.SelectNodes("//aa:Response", nsmgr); //跨过所有父级节点查找,成功 var list3 = doc.SelectNodes("aa:PIM//aa:Response", nsmgr); //跨过中间节点,成功 var node1 = doc.SelectSingleNode("aa:PIM/aa:Responses/aa:Response[@Action='GetImFreqs']", nsmgr);//带属性查找,成功 var list5 = doc.SelectNodes("PIM/Responses/Response"); //没有带上域名,失败 var list6 = doc.SelectNodes("Responses/Response");//无域名,失败 var list7 = doc.SelectNodes("aa:Responses/aa:Response", nsmgr);//相对路径查找,失败 var list8 = doc.SelectNodes("../Response");//失败 var list9 = doc.SelectNodes("../aa:Response", nsmgr);//失败 var list10 = doc.SelectNodes("PIM//Response"); //无域名,失败 var node2 = doc.SelectSingleNode("PIM/Responses/Response[@Action='GetImFreqs']");//无域名,失败 var node3 = doc.SelectSingleNode("aa:PIM/Responses/Response", nsmgr);//失败 var node4 = doc.SelectSingleNode("aa:PIM/aa:Responses/aa:Response[@aa:Action='GetImFreqs']", nsmgr);//标志位置错误,失败 var node5 = doc.SelectSingleNode("PIM/Responses/Response");//失败
标签:aa,nsmgr,doc,XmlDocument,SelectNodes,域名空间,查找,var,Response 来源: https://www.cnblogs.com/ccjungle/p/16514553.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。