无法正确读取XML

时间:2016-08-22 00:21:28

标签: c# xml linq

我找到了一篇文章来帮助解析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
                    })
            })
    };

1 个答案:

答案 0 :(得分:2)

您正在查询启用 d 元素,但您的示例XML包含 enable 元素。这就是你获得NullReferenceException的原因。

更改

enabled = Convert.ToBoolean(container.Element("enabled").Value),

enabled = Convert.ToBoolean(container.Element("enable").Value),

或更新您的XML架构以匹配您的查询。