C# 使用XmlTextReader循环遍历具有相同名称的XML属性
我正在用XmlTextReader编写一些练习代码。我编写了一些非常基本的XML,如下所示:C# 使用XmlTextReader循环遍历具有相同名称的XML属性,c#,xml,C#,Xml,我正在用XmlTextReader编写一些练习代码。我编写了一些非常基本的XML,如下所示: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <task name="mixed_sprite_task_test"> <sprite> <type>animatedSprite</type> <id>0</id>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<task name="mixed_sprite_task_test">
<sprite>
<type>animatedSprite</type>
<id>0</id>
<name>animatedSprite</name>
<fileName>iyezoz</fileName>
<startingPositionX>200</startingPositionX>
<startingPositionY>200</startingPositionY>
<sheetSizeX>12</sheetSizeX>
<sheetSizeY>35</sheetSizeY>
<startingFrameX>0</startingFrameX>
<startingFrameY>0</startingFrameY>
<startingState>standing</startingState>
<movementSpeed>15</movementSpeed>
<frameDelay>0.055</frameDelay>
</sprite>
<sprite>
<type>staticSprite</type>
<id>0</id>
<name>staticSprite</name>
<fileName>Super_Mario_63</fileName>
<startingPositionX>0</startingPositionX>
<startingPositionY>0</startingPositionY>
</sprite>
<sprite>
<type>simpleSprite</type>
<id>0</id>
<name>simpleSprite</name>
<fileName>imgres</fileName>
<startingPositionX>100</startingPositionX>
<startingPositionY>100</startingPositionY>
<movementSpeed>15</movementSpeed>
</sprite>
</task>
动画精灵
0
动画精灵
伊耶佐兹
200
200
12
35
0
0
常设的
15
0.055
静态雪碧
0
静态雪碧
超级马里奥63
0
0
单纯形
0
单纯形
imgres
100
100
15
此文件显示我有一个任务
。在任务中,我有3个sprite
s。
在我的代码中,我想循环遍历每个sprite
,并收集信息
我可以从第一个sprite
获取数据,没有问题。是否有某种方法可以循环遍历具有相同名称属性的xml
谢谢大家! 我更喜欢Linq2Xml
var xDoc = XDocument.Parse(xmlstring); //or XDocument.Load(filename);
var sprites = xDoc.Descendants("sprite")
.Select(s=>s.Elements()
.ToDictionary(e=>e.Name.LocalName,e=>(string)e))
.ToList();
你可以把它当作
var type = sprites[0]["type"];
或者可以采取安全的行动
string delay;
if (sprites[1].TryGetValue("frameDelay", out delay))
{
Console.WriteLine(delay);
}
我更喜欢Linq2Xml
var xDoc = XDocument.Parse(xmlstring); //or XDocument.Load(filename);
var sprites = xDoc.Descendants("sprite")
.Select(s=>s.Elements()
.ToDictionary(e=>e.Name.LocalName,e=>(string)e))
.ToList();
你可以把它当作
var type = sprites[0]["type"];
或者可以采取安全的行动
string delay;
if (sprites[1].TryGetValue("frameDelay", out delay))
{
Console.WriteLine(delay);
}
您可以选择名为“sprite”的所有节点
您可以选择名为“sprite”的所有节点
是,选择多个匹配节点。显示用于查看第一个节点的代码。是的,您选择了多个匹配节点。显示用于查看第一个节点的代码。