SelectSingleNode() с ошибкой XPath C#
Я получил XML-файл в качестве экспорта из Wireshark и хочу выбрать номер фактического кадра
Структура этого файла выглядит следующим образом
<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".
Кто-нибудь подозревает, что это за провал? Я ничего не нашел в интернете по этому поводу
Большое спасибо!!
1 ответ
Решение
Это потому, что ваш XPath в SelectSingleNode
начинается с //
- что означает "начать с корня документа". Поэтому вы всегда получаете первый.
Просто измените XPath в этом методе на proto/field[@name='frame.number']
,