使用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中指定命名空间。