从XML文档中提取元素
有人可以告诉我如何使用.NET 3.5框架下的XPath和C#从下面的XML中提取Errors元素吗?
COMPANY NAME FIELD IS INVALID
如果您没有向我们展示您的代码,我们无法分辨您出错的地方。
但我们可以猜到。 您的Errors元素位于命名空间中,并且未能识别这一事实是缺乏经验的常见错误,我很乐意打赌这是您的错误。
要在命名空间中查找元素,您需要一个路径,例如// e:错误,其中前缀e被绑定(在C#API级别)到命名空间http://www.opentravel.org/OTA/2003/05 。
(对不起,你没有说你没经验。我推断这是因为如果你有经验,你会发布你的XPath代码)。
试试这段代码:
XmlDocument xmlDoc = new XmlDocument(); xmlDoc .LoadXml(xmlSting); //If u have a xml string, you can create xmlDocument like this, otherwise u can use file name to create xmlDocument. String error = .SelectSingleNode("SOAP-ENV:Envelope/SOAP-ENV:Body/return/Errors/Error").Value;
XmlNodeList errorNodes=new XmlDocument().Load("xmlFilePath").GetElementsByTagName("Errors");
使用 :
//*[name()='Errors']
这将选择XML文档中的任何元素,其名称为“错误” – 无论元素的名称空间如何。
或者,如果您想要更精确并考虑元素所在的确切命名空间,则需要使用XmlNamespaceManager
对象并使用其AddNamespace()
方法注册前缀和命名空间之间所需的任何关联。