我有一个这样的 xml 文档:
<Menu>
<Category name="Comida Rapida">
<Food cocina="si">
<Name>Haburguesa</Name>
<Price>10</Price>
</Food>
<Food>
<Name>Papas Fritas</Name>
<Price>20</Price>
</Food>
</Category>
<Category name="Bebidas">
<Food>
<Name>Pepsi</Name>
<Price>30</Price>
</Food>
<Food cocina="si">
<Name>Coca Cola</Name>
<Price>40</Price>
</Food>
</Category>
</Menu>
我想要做的是<Category>
检查每个属性是否是我需要的,例如“Bebidas”,所以我感兴趣的部分是:
<Food>
<Name>Pepsi</Name>
<Price>30</Price>
</Food>
<Food cocina="si">
<Name>Coca Cola</Name>
<Price>40</Price>
</Food>
现在我有了这个,我想做一些类似于我已经做过的事情:
首先我想打印出所有:
Pepsi 30
Coca Cola 40
而且我只想打印出 food 具有属性的那些cocina="si"
,所以:
Coca Cola 40
所以我有各种各样的问题:
首先要使用哪种方法,我对大量可能的方法和实现感到困惑:XmlDocument、XmlReader、XmlTextReader 等。
从这个问题中,我收集到 XmlDocument 更容易使用,那就太好了,越简单越好,因为我对解析 Xml 文件很陌生,正如你所欣赏的那样。
现在到了实际的实现,我尝试了各种各样的事情,但没有多少成功,我似乎可以做一些部分,但不能一起做。
XmlNodeList elemList = doc.GetElementsByTagName("Category");
for (int i = 0; i < elemList.Count; i++)
{
Console.WriteLine(elemList[i].InnerXml);
}
这将输出:
<Food><Name>Haburguesa</Name><Price>10</Price></Food><Food><Name>Papas Fritas</Name><Price>20</Price></Food>
<Food><Name>Pepsi</Name><Price>30</Price></Food><Food><Name>Coca Cola</Name><Price>40</Price></Food>
这是有道理的,但现在,我如何检查类别是否具有属性name="cocina"
?
我猜这样的事情可能会有所帮助:
for (int j = 0; j < elemList[i].Attributes.Count; j++)
{
//??
}
MoveToAttribute()
但我在 XmlTextReader 中找不到类似的东西。
再说一遍,我如何检查是否有属性cocina="si"
?