vb SelectSingleNode 的动态版本

Dynamic version of vb SelectSingleNode

我知道

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

可以以静态方式对 xml 文件中的元素进行寻址。

有没有办法使用类似的方案但使用动态寻址。例如。其中“Atwood”不是常量字符串,而是动态字符串。

感谢您的帮助。

顺便说一句:示例来自 Microsoft help site

SelectSingleNode() 接收到的 XPath 表达式只是一个字符串。您应该能够使用任何适用于在 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)

供参考: