Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# 使用XmlTextReader循环遍历具有相同名称的XML属性_C#_Xml - Fatal编程技术网

C# 使用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>

我正在用XmlTextReader编写一些练习代码。我编写了一些非常基本的XML,如下所示:

<?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”的所有节点


是,选择多个匹配节点。显示用于查看第一个节点的代码。是的,您选择了多个匹配节点。显示用于查看第一个节点的代码。