C#尝试读取XML并在某一点停止

时间:2014-01-30 08:41:12

标签: c# xml

我有一个稍大的XML文件(在下面发布),我正在尝试使用C#阅读。我知道它将读取XML文件中的NAME和TYPE(我将在稍后使用),但我想找到一种方法,当它到达某个标签时停止。

例如:

我现在查看DATA ATTRIBUTES PHYSICAL ATTR,然后循环以获取所有NAME和TYPE值。

我希望它在到达negativePhysical时停止,因为这是其他内容的信息。

以下是我一直在使用的代码:

XmlTextReader reader = new XmlTextReader("/Attributes.xml");
            while (reader.Read())
            {
                reader.ReadToFollowing("data");
                reader.ReadToFollowing("attributes");
                reader.ReadToFollowing("physical");
                reader.ReadToFollowing("attr");

                    while (reader.Read())
                    {
                        reader.ReadToFollowing("name");
                        name = reader.ReadString();
                        reader.ReadToFollowing("type");
                        type = reader.ReadString();

                    }


            }

以下是我正在使用的XML的一小部分示例:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <attributes>
        <physical>
            <attr>
                <name>Aggressive</name>
                <type>Unk</type>
            </attr>
            <attr>
                <name>Agile</name>
                <type>Msc</type>
            </attr>
        </physical>
        <negativePhysical>
            <attr>
                <name>Clumsy</name>
            </attr>
            <attr>
                <name>Cowardly</name>
            </attr>
        </negativePhysical>
        <social>
            <attr>
                <name>Alluring</name>
                <type></type>
            </attr>
            <attr>
                <name>Beguiling</name>
                <type></type>
            </attr>
        </social>
        <negativeSocial>
            <attr>
                <name>Bestial</name>
            </attr>
            <attr>
                <name>Callous</name>
            </attr>
        </negativeSocial>
        <mental>
            <attr>
                <name>Alert</name>
            <type></type>
            </attr>
            <attr>
                <name>Analytical</name>
                <type></type>
            </attr>
        </mental>
        <negativeMental>
            <attr>
                <name>Deceitful</name>
            </attr>
            <attr>
                <name>Forgetful</name>
            </attr>
        </negativeMental>
    </attributes>
</data>

最终,每个“属性”都将被迭代,我将在稍后的“Abilities”文件中添加更多信息。我已经查看了代码,试图在这上面使用LINQ,但到目前为止,我还没有得到任何回报。

1 个答案:

答案 0 :(得分:0)

您可以使用XmlDocument来阅读。您可以迭代XmlNode元素并检查ElementName

XmlDocument doc = new XmlDocument.LoadXml(xml);
foreach (XmlNode node in doc.ChildNodes)
{
    if (node.ElementName == "x")
    {
        ...
    }
    else
    {
        ...
    }
}