Совпадения Xpath

Mebpuf

Client
Регистрация
12.03.2019
Сообщения
48
Благодарностей
1
Баллы
8
Всем привет. Не подскажете такое, есть путь XPath - //div[@class='first']/div[@class='second] . На странице именно таких 20 совпадений. Как брать каждый по порядку? Номер совпадения как правильно указывать? Нужна конструкция типа- //div[@class='first'][2совпадение]/div[@class='second][2совпадение]. Как правильно оформить? Делал так, например, для второго совпадения, не помогает //div[@class='first'][2]/div[@class='second][2]
 
Последнее редактирование:

orka13

Client
Регистрация
07.05.2015
Сообщения
2 175
Благодарностей
2 177
Баллы
113
Код:
(//div[@class='first']/div[@class='second])[2]
 
  • Спасибо
Реакции: borzd и Mebpuf

Mebpuf

Client
Регистрация
12.03.2019
Сообщения
48
Благодарностей
1
Баллы
8
Оно. Спасибо. Целый день мозги ломал. Пойду отмечать
 

b1zar

Client
Регистрация
29.06.2019
Сообщения
107
Благодарностей
66
Баллы
28
Либо можешь собрать все в Список и оттуда брать.

Код:
Tab tab = instance.ActiveTab;
if (tab.IsVoid || tab.IsNull) return -1;
// Получаем атрибут "href" всех элементов, соответствующих пути "//div[@class='first']/div[@class='second]"
var attributes = ZennoPoster.Parser.ParseByXpath(tab, ZennoLab.InterfacesLibrary.Enums.Parser.SourceType.Dom, "//div[@class='first']/div[@class='second]", "href", true).ToList();
// Фильтруем элементы
attributes.Filter(ZennoLab.InterfacesLibrary.Enums.Parser.FilterType.None, "");
// Выбираем элементы из диапазона "all"
attributes.Range("all");

project.Lists["Список 1"].AddRange(attributes);
 

Mebpuf

Client
Регистрация
12.03.2019
Сообщения
48
Благодарностей
1
Баллы
8
Чуть не то с ХPath. Нужна именно такая конструкция , если она вообще возможна - //div[@class='first'][2совпадение]/div[@class='second'][2совпадение] . И списки не подходят. Дело в том что в некоторых результатах нет значения - /div[@class='second'][2совпадение]. И если брать списки то в одном будет например 19 значений а во втором например 22. Это товары (@class='first') и описание (@class='second') к ним. И когда начну собирать все перемешается не так как надо. Хотелось бы чтобы если я указал конкретный номер совпадения, а если в нем нет значения /div[@class='second'][2совпадение] (описание товара) , то в описание товара записывалась бы пустая строка или переменная, А НЕ перескакивало на следующее совпадение описания другого не соответствующего товара и тем самым брало описание не соответствующее ему. Если такое возможно вообще.
А в такой конструкции -
Код:
(//div[@class='first']/div[@class='second])[2]
-если нет описания у второго товара оно перескакивает и берет описание третьего к названию второго и получается всё перемешалось и не соответствует
 
Последнее редактирование:

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Чуть не то с ХPath. Нужна именно такая конструкция , если она вообще возможна - //div[@class='first'][2совпадение]/div[@class='second'][2совпадение] . И списки не подходят. Дело в том что в некоторых результатах нет значения - /div[@class='second'][2совпадение]. И если брать списки то в одном будет например 19 значений а во втором например 22. Это товары (@class='first') и описание (@class='second') к ним. И когда начну собирать все перемешается не так как надо. Хотелось бы чтобы если я указал конкретный номер совпадения, а если в нем нет значения /div[@class='second'][2совпадение] (описание товара) , то в описание товара записывалась бы пустая строка или переменная, А НЕ перескакивало на следующее совпадение описания другого не соответствующего товара и тем самым брало описание не соответствующее ему. Если такое возможно вообще.
А в такой конструкции -
Код:
(//div[@class='first']/div[@class='second])[2]
-если нет описания у второго товара оно перескакивает и берет описание третьего к названию второго и получается всё перемешалось и не соответствует
потому что не структурирован сбор данных по строкам , если найденное значение пусто - ты его не получаешь, а записываешь в конец столбца или списка. Я тебе вот здесь , как это можно структурировать. Можешь потом в С# это все перевести)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)