使用命名空间C#解析XML

我一直在努力解析这个XML数据。 看起来我的问题是命名空间。 我认为我的上一个网站http://www.codeproject.com/Articles/30965/Read-XML-with-Namespace-resolution-using-XLinq-XEl有一丝希望,但它也失败了。 每次我运行下面的代码时,我都会得到“对象引用未设置为对象的实例”。 似乎有很多方法用C#解析XML,但这些命名空间让我感到害怕。 我究竟做错了什么?

请记住,我是XML和C#的新手,并且用于解析JSON数据。 是的,我用Google搜索了几种解析XML数据的方法,在这种情况下没有任何用处。 我可以在没有命名空间的情况下获取XML,但是它们始终存在错误。

C#代码:

XElement element = XElement.Parse(xml); XNamespace ns2 = "http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd"; string val = element.Element(ns2 + "ItemDimensions").Element(ns2 + "Heigth").Value; Console.WriteLine(val); 

XML数据:

  Troelsen, Andrew Paperback Apress 5  9.21 7.48 2.52 5.80  false true false Apress   english Unknown   english Original Language   english Published    59.99 USD  Apress 1 1752  2.60 9.20 7.50 5.80  9781430225492 Book ABIS_BOOK 2010-05-14 Apress  http://sofzh.miximages.com/c%23/51h9Sju5NKL._SL75_.jpg 75 61  Apress Pro C# 2010 and the .NET 4 Platform  

首先:元素名称是Height而不是Heigth

您可以使用此代码获取Height值:

 var doc = XDocument.Load(path); XNamespace ns2 = "http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd"; string val = doc.Document.Descendants(ns2 + "ItemDimensions") .FirstOrDefault().Element(ns2 + "Height").Value; Console.WriteLine(val);