当我尝试解析此XML时,遇到了问题。
<?xml version="1.0" encoding="ISO-8859-1"?>
<Objects>
<Object type="0x141" id="Amulet of Resurrection">
<Class>Equipment</Class>
<Item />
<ActivateOnEquip stat="20" amount="2">IncrementStat</ActivateOnEquip>
<ActivateOnEquip stat="21" amount="2">IncrementStat</ActivateOnEquip>
<ActivateOnEquip stat="22" amount="2">IncrementStat</ActivateOnEquip>
<ActivateOnEquip stat="26" amount="2">IncrementStat</ActivateOnEquip>
<ActivateOnEquip stat="27" amount="2">IncrementStat</ActivateOnEquip>
<ActivateOnEquip stat="28" amount="2">IncrementStat</ActivateOnEquip>
<ActivateOnEquip stat="0" amount="20">IncrementStat</ActivateOnEquip>
<ActivateOnEquip stat="3" amount="20">IncrementStat</ActivateOnEquip>
</Object>
</Objects>
我的程序只读取了第一个ActivateOnEquip,但我希望它能读取所有的。
这是我的程序:
using System;
using System.Xml;
namespace ParseXML
{
internal class Program
{
private static void Main(string[] args)
{
ParseXMLEquip(@"..\..\obj\Debug\Object\Test.xml");
Console.ReadLine();
}
private static void ParseXMLEquip(string fileName)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(fileName);
XmlNodeList EquipNodes = xmlDocument.SelectNodes("//*");
{
foreach (XmlNode EquipNode in EquipNodes)
{
XmlNode Stat = EquipNode["ActivateOnEquip"];
if (Stat != null)
{
switch (Stat.Attributes["stat"].InnerText)
{
case "0":
{
Console.WriteLine("Hp: " + Stat.Attributes["amount"].InnerText);
}
break;
case "3":
{
Console.WriteLine("Mp: " + Stat.Attributes["amount"].InnerText);
}
break;
case "20":
{
Console.WriteLine("Attack: " + Stat.Attributes["amount"].InnerText);
}
break;
case "21":
{
Console.WriteLine("Defense: " + Stat.Attributes["amount"].InnerText);
}
break;
case "22":
{
Console.WriteLine("Speed: " + Stat.Attributes["amount"].InnerText);
}
break;
case "28":
{
Console.WriteLine("Dexterity: " + Stat.Attributes["amount"].InnerText);
}
break;
case "26":
{
Console.WriteLine("Vitality: " + Stat.Attributes["amount"].InnerText);
}
break;
case "27":
{
Console.WriteLine("Wisdom: " + Stat.Attributes["amount"].InnerText);
}
break;
}
}
}
}
}
}
}
控制台只会输出 Attack : 2
,但我想要这样的结果:
Attack : 2
Defense : 2
Speed : 2
Vitality : 2
Wisdom : 2
Dexterity : 2
HP : 20
MP : 20