如何从XmlDocument中选择具有命名空间的节点?

时间:2014-12-31 08:06:49

标签: c# .net xml xpath xmldocument

IDE:VS 2010,winforms,

我有一个xml字符串

string  xmlstr = "<string xmlns="http://example.com/proj1">True|Success</string>";    

我正在尝试选择<string>节点以获取其InnerText以进行后续解析:

True|Success  

使用以下代码:

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xmlstr);          
string message = xdoc.SelectSingleNode("string").InnerText;  //Here getting null Execption error.  

你能告诉我如何从xml中选择这条消息吗?

1 个答案:

答案 0 :(得分:2)

您需要添加XmlNamespaceManager才能选择节点:

XmlNode.SelectSingleNode Method (String, XmlNamespaceManager)

string xmlstr = "<string xmlns=\"http://example.com/proj1\">True|Success</string>";    
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xmlstr);

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xdoc.NameTable);
nsmgr.AddNamespace("ab", "http://example.com/proj1");

XmlNode stringNode = xdoc.SelectSingleNode("//ab:string", nsmgr);
string message = stringNode.InnerText;

此外,您的xml字符串在示例中无效,因为它包含未引用的双引号。