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

这是因为您的 XPathSelectSingleNode以 - 开头,//这意味着“从文档的根目录开始”。因此,您总是得到第一个。

只需将该方法中的 XPath 更改为proto/field[@name='frame.number'].

于 2011-10-20T14:54:23.917 回答