我找到了一篇文章来帮助解析XML: http://geekswithblogs.net/pabothu/archive/2014/04/29/reading-a-complex-xml-using-linq-in-c-sharp.aspx
我正在尝试读取XML,但我得到一个null对象。我有点困惑我做错了,因为我无法调试那些LINQ查询。
sub-font
这是XML:
var containers =
from container in xmlDoc.Descendants("container")
//where container.Attribute("ID").Value != "0"
select new Container
{
id = Convert.ToInt32(container.Element("id").Value),
name = container.Element("name").Value,
enabled = Convert.ToBoolean(container.Element("enabled").Value),
components = new List<Component>(
from component in container.Descendants("component")
select new Component
{
id = Convert.ToInt32(component.Element("id").Value),
name = component.Element("name").Value,
type = component.Element("type").Value,
connectors = new List<Connector>(
from connector in component.Descendants("connector")
select new Connector
{
id = Convert.ToInt32(component.Element("id").Value),
name = connector.Element("name").Value,
source = connector.Element("id").Value,
destination = component.Element("id").Value
})
})
};
答案 0 :(得分:2)
您正在查询启用 d 元素,但您的示例XML包含 enable 元素。这就是你获得NullReferenceException
的原因。
更改
enabled = Convert.ToBoolean(container.Element("enabled").Value),
到
enabled = Convert.ToBoolean(container.Element("enable").Value),
或更新您的XML架构以匹配您的查询。