使用XDocument和XPath解析xml

  BOBBIES COUNTY DEED 2010-02-19T05:14:58 200000.00 200000.00 2560.00 500.00 0.00 0.00 0.00 3060 5.00 0.00 3065 -  JANE DOE  -  JON DOE  -  3141614    var affidavits = xDocument.Descendants("AFFIDAVIT"); var affidavitsTest = xDocument.XPathEvaluate("/reeta/AFFIDAVIT/COUNTY_NAME"); 

以上是我从第三方来源消费的xml。 出于某种原因,我不能用上面描述的任何一种方法解析xml。 任何见解都会非常有用,非常感谢你

您没有指定命名空间。 尝试:

 XNamespace ns = "http://pria.org"; var affidavits = xDocument.Descendants(ns + "AFFIDAVIT"); 

这一点

 var affidavits = xDocument.Descendants("AFFIDAVIT"); 

因为AFFIDAVIT位于http://pria.org命名空间中,所以不起作用。 这应该工作(虽然没有测试过):

 var affidavits = xDocument.Descendants("{http://pria.org}AFFIDAVIT"); 

替代方案,无需在代码中对命名空间进行硬编码就是使用根节点的命名空间,如下所示:

 var affidavits = xDocument.Descendants(xDocument.Root.Name.Namespace + "AFFIDAVIT"); 

由于区分大小写,xpath不起作用。 对于初学者来说,它应该是

 var affidavitsTest = xDocument.XPathEvaluate("/REETA/AFFIDAVIT/COUNTY_NAME"); 

REETA ,不是reeta 。 一旦解决了区分大小写,它也会出现名称空间问题。 我不太确定如何在XPath中指定命名空间。