C# XML-如何使用名称空间前缀

C# XML-如何使用名称空间前缀,c#,xml,namespaces,C#,Xml,Namespaces,我的XML地址是: 问题是节点是空的。我知道这是一个阅读XML时常见的新手问题,仍然无法解决我的错误,可能是名称空间val的问题?您需要将名称空间管理器传递到SelectNodes 方法 编辑:更正代码 XmlNodeList nodes = root.SelectNodes("/val:Root/SenSet/Entry", nsmgr); 只需将Xpath更改为: XmlNodeList nodes1 = root.SelectNodes("/val:Root/SenSet/Entry",

我的XML地址是:


问题是节点是空的。我知道这是一个阅读XML时常见的新手问题,仍然无法解决我的错误,可能是名称空间val的问题?

您需要将名称空间管理器传递到SelectNodes 方法

编辑:更正代码

XmlNodeList nodes = root.SelectNodes("/val:Root/SenSet/Entry", nsmgr);

只需将Xpath更改为:

XmlNodeList nodes1 = root.SelectNodes("/val:Root/SenSet/Entry",nsmgr);    
或:


xpath查询字符串应为:

XmlNodeList nodes = root.SelectNodes("/val:Root/SenSet/Entry", nsmgr);
或者更简单地说

XmlNodeList nodes = root.SelectNodes("//SenSet/Entry", nsmgr);

使用XmlNodeList nodest nodes=root.SelectNodes/val:root/SenSet/Entry,nsmgr;我更新了标题。提问时,请尽量让标题反映问题。在您的例子中,您似乎已经明白加载XML是有效的,但它仍然在标题中。注意:别忘了对答案进行投票,并接受你认为最有用的答案。
XmlNodeList nodes = root.SelectNodes("SenSet/Entry");
XmlNodeList nodes = root.SelectNodes("/val:Root/SenSet/Entry", nsmgr);
XmlNodeList nodes = root.SelectNodes("//SenSet/Entry", nsmgr);