HTML Agility — xpath выражение из переменной

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
Здравствуйте уважаемые!

C#:
var Nodes_list_1 = doc.DocumentNode.SelectNodes(@"мой_xpath");
В таком виде все работает замечательно.
А если в скобки вместо xpath-выражения поставить переменную
C#:
var Nodes_list_1 = doc.DocumentNode.SelectNodes(var_xpath];
ловлю такую ошибку:
Выполнение действия CSharp OwnCode. Expression must evaluate to a node-set.
Подскажите пожалуйста решение!
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
и тебя в твоих скобках ничего не смущает?
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
и тебя в твоих скобках ничего не смущает?
О! Это я так скопкопипастил строку с тегом [/CODE]
В проекте все нормуль, а переменная в скобках вызывает ошибку
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
О! Это я так скопкопипастил строку с тегом [/CODE]
В проекте все нормуль, а переменная в скобках вызывает ошибку
значит что-то не так с xpath внутри переменной
 

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
значит что-то не так с xpath внутри переменной
То-то и оно, что если вписываю строку xpath в скобки все отрабатывает, нужные элементы находит и собирает, если указываю переменную (опять же копипастом, и после косяка в первом посте топика проверил еще раз, убедившись что правильно все скопировал) — болт. Единственное что не совсем ясно - это @. Полагаю она используется для зеркалирования, а вот как ее с переменной сочетать, не до конца понимаю. Возможно здесь где-то косячу.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
То-то и оно, что если вписываю строку xpath в скобки все отрабатывает, нужные элементы находит и собирает, если указываю переменную (опять же копипастом, и после косяка в первом посте топика проверил еще раз, убедившись что правильно все скопировал) — болт. Единственное что не совсем ясно - это @. Полагаю она используется для зеркалирования, а вот как ее с переменной сочетать, не до конца понимаю. Возможно здесь где-то косячу.
без кода это всё гадание на кофейной гуще
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
457
Баллы
63
То-то и оно, что если вписываю строку xpath в скобки все отрабатывает, нужные элементы находит и собирает, если указываю переменную (опять же копипастом, и после косяка в первом посте топика проверил еще раз, убедившись что правильно все скопировал) — болт. Единственное что не совсем ясно - это @. Полагаю она используется для зеркалирования, а вот как ее с переменной сочетать, не до конца понимаю. Возможно здесь где-то косячу.
 
  • Спасибо
Реакции: semafor

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
без кода это всё гадание на кофейной гуще
Не поспоришь. Сразу код не стал выкладывать, т.к. по сути и выражение xpath и сам код отрабатывает. Ошибка возникает только когда xpath через переменную пытаюсь подсунуть.
Xpath выглядит так: @"//div[@class='bx_sitemap']//a". Естественно его проверял. Код, приведенный ниже отрабатывает на ура:

C#:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

var template_html = project.Variables["get"].Value; // грузим наш код
var var_xpath1 = project.Variables["catXpath"].Value; //xpath выражение

doc.LoadHtml(template_html); // грузим DOM текст (из переменной template_html) в объект doc
var Nodes_list_1 = doc.DocumentNode.SelectNodes(@"//div[@class='bx_sitemap']//a"); //  Вот эта строка выдает ошибку если вместо xpath поставить переменную
Все то же самое, но вместо выражения xpath переменная:

C#:
var Nodes_list_1 = doc.DocumentNode.SelectNodes(var_xpath1);
В таком виде получаю ошибку:
Выполнение действия CSharp OwnCode: Свой C# код Expression must evaluate to a node-set.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
  • Спасибо
Реакции: semafor

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
404
Баллы
63
doc спасибо! Я ведь понимал, что туплю, только не мог понять где. Я в переменную кавычки пихал...
 

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