gpt4 book ai didi

c# - GetElementByID.GetElementsByTagName 返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:56 25 4
gpt4 key购买 nike

我的 friend 写了这段 XML 代码,用于在我们的游戏中加载和写入保存数据时进行简单测试。问题是他的代码根本不起作用,而且我以前从未写过任何 XML 代码,所以这对我来说是新的,我决定学习 XML。它只需要 x 和 y 值来创建新的 Tile 对象。运行代码时出现错误:

System.NullReferenceException 未处理

HResult=-2147467261

Message=对象引用未设置为对象的实例。

TL;DR 它加载简单的 Tiles,它所寻找的只是 x 和 y 位置,以便稍后添加到在 Level 类中访问的列表中。

他写的代码:

public class XmlHandler
{
private List<Base.Tile> tiles;
public XmlHandler()
{
}
public void Load()
{
XmlDocument documentFile = new XmlDocument();
documentFile.Load(@"C:\Tiles\0.xml");

var listOfTiles = documentFile.GetElementById("tiles").GetElementsByTagName("tile");

foreach(XmlElement tile in listOfTiles)
{
var x = ((XmlElement)tile.GetElementsByTagName("position")[0]).GetAttribute("x");
var y = ((XmlElement)tile.GetElementsByTagName("position")[0]).GetAttribute("y");
Classes.Base.Tile t = new Base.Tile(new Vector2(float.Parse(x), float.Parse(y)));
this.tiles.Add(t);
}
}
public List<Base.Tile> GetTiles()
{
return this.tiles;
}
}

当前的XML文件,修改自原始文件如下图

<tiles>
<tile>
<position x="10" y="20" />
</tile>
<tile>
<position x="50" y="20" />
</tile>
<tile>
<position x="30" y="40" />
</tile>
</tiles>

这是我修改的原始 XML,因为第一行导致错误

<?xml encoding="utf-8"?>
<tiles>
<tile>
<id>1</id>
<position x="10" y="20" />
</tile>
<tile>
<id>2</id>
<position x="50" y="20" />
</tile>
<tile>
<id>3</id>
<position x="30" y="40" />
</tile>
</tiles>

感谢观看/阅读。感谢您的帮助!

最佳答案

错误在这里:

var listOfTiles = documentFile.GetElementById("tiles").GetElementsByTagName("tile");

改成这样:

var listOfTiles = documentFile.GetElementsByTagName("tiles").GetElementsByTagName("tile");

<tiles>是一个标签,它没有任何 id。

关于c# - GetElementByID.GetElementsByTagName 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39099925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com