0

Wireshark からのエクスポートとして XML ファイルを取得し、実際のフレームの番号を選択したい

このファイルの構造はこのようなものです

<packet>
    <proto>
        ...
    </proto>
    ....
    <proto>
        <field name="frame.number" show="1">
    </proto>
</packet>
<packet>
    <proto>
        ...
    </proto>
    ....
    <proto>
        <field name="frame.number" show="2">
    </proto>
</packet>

...等々...

このコードを使用して、パケット/フィールドを選択します

XmlNodeList packages = xmlDoc.SelectNodes("//packet");
foreach (XmlNode packet in packages) {
    string frameNumber = packet.SelectSingleNode("//field[@name='frame.number']").
        Attributes["show"].Value;
    Console.WriteLine(frameNumber);
}

コードをデバッグすると、常に正しい属性を持つ正しいノードが選択されます。しかし、反復ごとに「1」が出力されます。

これが何の失敗だと思う人はいますか?この失敗についてインターネット上で何も見つかりませんでした

どうもありがとうございました!!

4

1 に答える 1

2

これは、「ドキュメントのルートから開始する」ことを意味する -でSelectSingleNode始まるためです。//したがって、常に最初のものを取得しています。

そのメソッドの XPath を に変更するだけproto/field[@name='frame.number']です。

于 2011-10-20T14:54:23.917 に答える