私は次のような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
そして、私は食べ物が属性を持っていたものだけを印刷したい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"
か?