XPath 多属性条件变量
XPath Multiple Attribute Condition Variables
样本XML
<catalog>
<book id="Adventure" Type="Hardcover">
<other>
<author name="Jones" id="Adventure">
</author>
</other>
</book>
</catalog>
这些说法有道理吗?我需要进行完整性检查,看看所有这些 variables/quotes 发生了什么。我尝试使用其中一个 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 & """]")
几个注意事项:
在属性名称的开头使用@
来引用xpath中的XML属性
我建议在您的 xpath 中使用单引号,因为使用的字符串包装字符是双引号。这将使您的代码看起来更清晰。
name()
return 当前上下文的名称 element/attribute,使用 @name
代替引用名为 [=14] 的 XML 属性=]
您的某些路径与 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 &"']")
样本XML
<catalog>
<book id="Adventure" Type="Hardcover">
<other>
<author name="Jones" id="Adventure">
</author>
</other>
</book>
</catalog>
这些说法有道理吗?我需要进行完整性检查,看看所有这些 variables/quotes 发生了什么。我尝试使用其中一个 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 & """]")
几个注意事项:
在属性名称的开头使用
@
来引用xpath中的XML属性我建议在您的 xpath 中使用单引号,因为使用的字符串包装字符是双引号。这将使您的代码看起来更清晰。
name()
return 当前上下文的名称 element/attribute,使用@name
代替引用名为 [=14] 的 XML 属性=]您的某些路径与 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 &"']")