2016-10-08 5 views
0

Я знаю, что сДинамическая версия Vb SelectSingleNode

book = root.SelectSingleNode("descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr); 

можно адресовать элементы внутри файла XML статическим способом.

Есть ли способ использовать подобную схему, но с динамическим адресом. Например. где'Atwood 'не является строкой const, а не динамической строкой.

Спасибо за помощь.

Btw: Пример из Microsoft help site

+1

Разве вы не можете просто иметь «формат» строку с заполнителем и использовать (например) 'String.Format' встраивать значения переменных и построить, что«запрос»? – Sehnsucht

+0

Perfect Sehnsucht. Спасибо. – MKFein

ответ

2

выражения XPath, что SelectSingleNode() получает это просто строка. Вы должны быть в состоянии использовать любой подход применят для построения строки динамически в VB, то есть простая конкатенация:

lastname = "Atwood" 
query = "descendant::bk:book[bk:author/bk:last-name='" & lastname & "']" 
book = root.SelectSingleNode(query, nsmgr) 

... String.Format() как упомянуто в комментарии:

lastname = "Atwood" 
query = "descendant::bk:book[bk:author/bk:last-name='{0}']" 
book = root.SelectSingleNode(String.Format(query, lastname), nsmgr) 

... или с помощью нового функция из VB 14, строка интерполяции:

lastname = "Atwood" 
query = $"descendant::bk:book[bk:author/bk:last-name='{lastname}']" 
book = root.SelectSingleNode(query, nsmgr) 

Для справки: