#xml #vb.net #xmldocument
#xml #vb.net #xmldocument
Вопрос:
Я знаю, что с
book = root.SelectSingleNode("descendant::bk:book[bk:author/bk:last-name='Atwood']", nsmgr);
можно адресовать элементы внутри XML-файла статическим образом.
Есть ли способ использовать аналогичную схему, но с динамической адресацией. Например. где ‘Дерево’ не является постоянной строкой, а не динамической строкой.
Спасибо за помощь.
Кстати: пример с сайта справки Microsoft
Комментарии:
1. Разве вы не можете просто иметь строку «форматирования» с заполнителем и использовать (например)
String.Format
для встраивания значений переменных и построения этого «запроса»?2. Perfect Sehnsucht. Спасибо.
Ответ №1:
SelectSingleNode()
Получаемое выражение XPath представляет собой просто строку. Вы должны иметь возможность использовать любой подход, применимый для динамического построения строки в VB, т.е. Простое объединение строк :
lastname = "Atwood"
query = "descendant::bk:book[bk:author/bk:last-name='" amp; lastname amp; "']"
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)
Для справки :