Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C从XML文件中读取列表?(新华社发行)_C#_Xml_List_Xna - Fatal编程技术网

C# 如何使用C从XML文件中读取列表?(新华社发行)

C# 如何使用C从XML文件中读取列表?(新华社发行),c#,xml,list,xna,C#,Xml,List,Xna,我对XML和XNA非常陌生,在阅读列表时遇到了一个障碍,我正在输出列表来存储具有许多不同层的平铺图 我的XML看起来像一个示例: <XnaContent xmlns:Maps="TileEditorLibrary.Maps"> <Asset Type="Maps:TileMap"> <R> <Item> <C> <Item> <E>

我对XML和XNA非常陌生,在阅读列表时遇到了一个障碍,我正在输出列表来存储具有许多不同层的平铺图

我的XML看起来像一个示例:

<XnaContent xmlns:Maps="TileEditorLibrary.Maps">
 <Asset Type="Maps:TileMap">
    <R>
      <Item>
        <C>
          <Item>
            <E>1</E>
            <ID>8</ID>
            <B>8</B>
            <H />
            <T />
          </Item>
          <Item>
            <E>1</E>
            <ID>8</ID>
            <B>8</B>
            <H />
            <T />
          </Item>
        </C>
      </Item>
    </R>
  </Asset>
</XnaContent>
目前,我正在运行应用程序,以查看它是否能够正确地获取文档并能够解析信息,但它抛出了一个空对象引用

如果这看起来很模糊,我很抱歉,但由于我对XML缺乏经验,我不确定还有什么其他信息可以帮助任何潜在的顾问

如果还有什么可以帮忙的,请询问,我会尽力解释

非常感谢


Barry

您应该做的是阅读XML。 这样,您就可以创建一个表示XML的类并直接对其进行反序列化,而无需进行任何XML解析


e就是一个例子。您应该做的是阅读XML。 这样,您就可以创建一个表示XML的类并直接对其进行反序列化,而无需进行任何XML解析


e是一个如何做到这一点的例子。

这可能会让你深思:

public void LoadContent(XDocument doc, TileMap myMap)
{
    var lookup = new Dictionary<string, Action<string>>()
    {
        { "E", v => { Console.WriteLine("E  = " + v); } },
        { "ID", v => { Console.WriteLine("ID = " + v); } },
        { "B", v => { Console.WriteLine("B  = " + v); } },
        { "H", v => { Console.WriteLine("H  = " + v); } },
        { "T", v => { Console.WriteLine("T  = " + v); } },
    };

    var actions =
        from e in doc.Root
            .Element("Asset")
            .Element("R")
            .Elements("Item")
            .Elements("C")
        from mv in e
            .Elements("Item")
            .Elements()
        let name = mv.Name.ToString()
        let value = mv.Value
        select new Action(() => lookup[name](value));

    foreach (var a in actions)
        a.Invoke();
}

这可能会让你深思:

public void LoadContent(XDocument doc, TileMap myMap)
{
    var lookup = new Dictionary<string, Action<string>>()
    {
        { "E", v => { Console.WriteLine("E  = " + v); } },
        { "ID", v => { Console.WriteLine("ID = " + v); } },
        { "B", v => { Console.WriteLine("B  = " + v); } },
        { "H", v => { Console.WriteLine("H  = " + v); } },
        { "T", v => { Console.WriteLine("T  = " + v); } },
    };

    var actions =
        from e in doc.Root
            .Element("Asset")
            .Element("R")
            .Elements("Item")
            .Elements("C")
        from mv in e
            .Elements("Item")
            .Elements()
        let name = mv.Name.ToString()
        let value = mv.Value
        select new Action(() => lookup[name](value));

    foreach (var a in actions)
        a.Invoke();
}

哪一行抛出空对象引用错误?哪一行抛出空对象引用错误?谢谢,希望现在可以排序谢谢,希望现在可以排序