画像情報を含む XML データがあります。私の最初の目標は、フィルター処理されたものを作成することですXmlNodeList
(例: すべての画像を返すcolor == yellow
)。最終的な目標は、画像の名前のリストを返すことができるようにすることですcolor == yellow
(フィルター処理された全体を返すことXmlNodeList
は素晴らしいことですが、名前や ID など、そのフィルター処理されたリスト内の 1 つの要素だけが必要です)。
私の場合、ルート ノードは と呼ばれImages
、各ノードを検索できるようにしたいと考えていImage
ます。私の XML データには XML 属性がないため、データのすべてのビットが要素として表されます (「黄色」の色を画像の属性ではなく、画像の子ノードにします)。
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Images xmlns="http://oec.api.opsource.net/schemas/server"
xmlns:ns9="http://oec.api.opsource.net/schemas/multigeo"
xmlns:ns5="http://oec.api.opsource.net/schemas/vip"
xmlns:ns12="http://oec.api.opsource.net/schemas/storage"
xmlns:ns6="http://oec.api.opsource.net/schemas/whitelabel"
xmlns:ns13="http://oec.api.opsource.net/schemas/manualimport"
xmlns:ns7="http://oec.api.opsource.net/schemas/datacenter"
xmlns:ns10="http://oec.api.opsource.net/schemas/reset"
xmlns:ns8="http://oec.api.opsource.net/schemas/general"
xmlns:ns11="http://oec.api.opsource.net/schemas/support"
xmlns:ns2="http://oec.api.opsource.net/schemas/directory"
xmlns:ns4="http://oec.api.opsource.net/schemas/network"
xmlns:ns3="http://oec.api.opsource.net/schemas/organization">
<Image>
<id>mcd93jf8dd</id>
<name>cat</name>
<color>yellow</color>
</Image>
<Image>
<id>d4b8l23sas</id>
<name>dog</name>
<color>yellow</color>
</Image>
</Images>
XML データの元のソースはストリームです。foreach ループを使用して XML 階層のさまざまなレベルを反復処理する方法を見つけましたが、子ノードで必要なすべてのメソッドを使用できないという問題に直面し続けています。他の場所のアドバイスはXPath
、フィルターを実装するために使用することを提案しているようですが、これまでに得たものでそれを機能させることができませんでした:
C#
//'stream' previously defined as a Stream
XmlReader reader = XmlReader.Create(stream);
XmlDocument xml = new XmlDocument();
xml.Load(reader);
XmlElement root = xml.DocumentElement;
XmlNodeList images = root.ChildNodes;
foreach (XmlNode image in images) {
XmlNodeList attributes = image.ChildNodes;
foreach (XmlNode attribute in attributes) {
//do stuff
}
}