繁体   English   中英

SelectSingleNode()与XPath C#失败

[英]SelectSingleNode() with XPath C# Failure

我从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”。

有人怀疑这是什么失败吗? 我没有在互联网上发现任何故障

非常感谢你!!

因为你在SelectSingleNode的XPath以//开头 - 这意味着“从文档的根开始”。 因此,你总是得到第一个。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM