XML/C#循环通过相同名称的节点
本文关键字:节点 循环 XML | 更新日期: 2023-09-27 18:19:43
我有一个包含键和值的XML文件,我当前循环遍历XML文档,并读取所有数据。
但是,我有某些"键"或"节点"具有相同的注释记号,但具有不同(或相同)的值。我需要在同一个父节点中循环这些相同的节点。
<tile>
<x>0</x>
<y>1</y>
<name>Grass</name>
<entity>Tree</entity>
<entity>Building</entity>
<entity>Something</entity>
</tile>
<tile>
<x>1</x>
<y>2</y>
<name>Dirt</name>
<entity>Tree</entity>
<entity>Building</entity>
</tile>
我需要得到X、Y和名称,以及实体的数组/列表。XML中的每个Tile都需要这个。
所以我需要循环浏览所有的并获得内容,包括带有的列表
当前代码:
XmlElement element = doc.DocumentElement;
XmlNodeList nList = element.SelectNodes("/map/tile");
foreach(XmlNode node in nList){
int x = int.Parse(node["x"].InnerText);
int y = int.Parse(node["y"].InnerText);
String materialName = node["name"].InnerText;
for(node["entity"] in allEntityNodesWithinThisTile){ }
}
感谢
string xml = @"<tile>
<x>0</x>
<y>1</y>
<name>Grass</name>
<entity>Tree</entity>
<entity>Building</entity>
<entity>Something</entity>
</tile>";
var data = from t in XElement.Parse(xml).DescendantsAndSelf("tile")
select new {
X=(int)t.Element("x"),
Y=(int)t.Element("y"),
Name=(string)t.Element("name"),
Entities= t.Elements("entity").Select (x => x.Value)
};
var data = from t in XElement.Load(xmlFileName).DescendantsAndSelf("tile")
select new {
X=(int)t.Element("x"),
Y=(int)t.Element("y"),
Name=(string)t.Element("name"),
Entities= t.Elements("entity").Select (x => x.Value)
};