示例XML
<catalog>
<book id="Adventure" Type="Hardcover">
<other>
<author name="Jones" id="Adventure">
</author>
</other>
</book>
</catalog>
这些陈述有意义吗?我需要进行健全性检查以查看所有这些变量/引号的内容。我尝试使用其中一个XPath测试站点,但它一直给我一个错误,我不知道为什么。
bookVar = "Adventure"
bookStyle = "Hardcover"
bookAuthor = "Jon"
Set my_location = XMLFile.SelectNodes("/catalog/book[@id=""" & bookVar & """]/author/other/*[contains(name(),""" & bookAuthor & """]")
Set my_location2 = XMLFile.SelectNodes("/catalog/book[@id=""" & bookVar & """ and Type=""" & bookStyle &"""]
Set my_location3 = XMLFile.SelectNodes("/catalog/book[@id=""" & bookVar & """]/other/author/*[contains(name(),""" & bookAuthor & """]")
答案 0 :(得分:4)
几点说明:
在属性名称的开头使用@
来引用xpath中的XML属性
我建议在xpath中使用单引号,因为使用的字符串包装字符是双引号。这将使您的代码看起来更清晰。
name()
返回当前上下文元素/属性的名称,使用@name
代替引用名为name
的
您的某些路径与XML文档中元素的确切层次结构不对应
示例xpath查询:
bookVar = "Adventure"
bookStyle = "Hardcover"
bookAuthor = "Jon"
Set my_location = XMLFile.SelectNodes("/catalog/book[@id='" & bookVar & "']/other/author[contains(@name,'" & bookAuthor & "']")
Set my_location2 = XMLFile.SelectNodes("/catalog/book[@id='" & bookVar & "' and @Type='" & bookStyle &"']")