我有一个稍大的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,但到目前为止,我还没有得到任何回报。
答案 0 :(得分:0)
您可以使用XmlDocument
来阅读。您可以迭代XmlNode
元素并检查ElementName
。
XmlDocument doc = new XmlDocument.LoadXml(xml);
foreach (XmlNode node in doc.ChildNodes)
{
if (node.ElementName == "x")
{
...
}
else
{
...
}
}