当前位置: 首页 > 知识库问答 >
问题:

跨节点的复合xpath表达式

公孙国兴
2023-03-14

我在看w3c书店xpath的例子。

基于xml:

    <?xml version="1.0" encoding="ISO-8859-1"?>

    <bookstore>

    <book category="COOKING">
      <title lang="en">Everyday Italian</title>
      <author>Giada De Laurentiis</author>
      <year>2005</year>
      <price>30.00</price>
    </book>

    <book category="CHILDREN">
      <title lang="en">Harry Potter</title>
      <author>J K. Rowling</author>
      <year>2005</year>
      <price>29.99</price>
    </book>

    <book category="WEB">
      <title lang="en">XQuery Kick Start</title>
      <author>James McGovern</author>
      <author>Per Bothner</author>
      <author>Kurt Cagle</author>
      <author>James Linn</author>
      <author>Vaidyanathan Nagarajan</author>
      <year>2003</year>
      <price>49.99</price>
    </book>

    <book category="WEB">
      <title lang="en">Learning XML</title>
      <author>Erik T. Ray</author>
      <year>2003</year>
      <price>39.95</price>
    </book>

</bookstore> 

我正在尝试使用XPath实现这一点:

“这个XML文档是否有一本作者为‘詹姆斯·麦戈文’、价格为‘49.99’的书,这个XML文档是否也有一本作者为‘埃里克·雷’、价格为‘39.95’的书

人类的说法是正确的,XPath等效的是什么?是否可以跨兄弟节点运行表达式,如果可以,如何运行?

为了澄清,在其他语言中,可以这样做:

(author1 = 'James McGovern' and price1 = '49.99') and (author2 = 'Erik T. Ray' and price2 = '39.95')

其中author1\price1是的子级:

和author2\price2是:


共有2个答案

王英彦
2023-03-14

只需对每本书进行比较,更新后的XPath为:

boolean(//book[author='James McGovern' and price='49.99']) and boolean(//book[author='Erik T. Ray' and price='39.95'])

或者,如果有一份包含多家书店的文件,并且您希望查找包含这两本书的所有书店,您可以执行以下操作:

/bookstore[book[author='James McGovern' and price='49.99'] and book[author='Erik T. Ray' and price='39.95']]
慕承允
2023-03-14

更新:

在你最后一次编辑后,我终于得到了你正在尝试的东西:)。如果要确保两个节点都存在,可以使用以下查询:

boolean(/bookstore[book[price = "39.95" and author = "Erik T. Ray"] and book[price = "49.99" and author = "James McGovern"]])
 类似资料:
  • 我使用XMLSpy编写了以下XPath来确定最长字符串长度,它在XMLSpy中工作: 但是当我在spring integration中将相同的字符串放入xpath-expression时,它会出错: org.springframework.beans.factory.BeanCreationException:创建名为xpath MaxLengthExceptionMsg的bean时出错:bean

  • 在本章中,我们将详细介绍XPath表达式,其中包括常见的节点类型,XPath定义和句柄。 序号 节点类型 描述 1 Root XML文档的根元素节点。 2 Element 元素节点。 3 Text 元素节点的文本。 4 Attribute 元素节点的属性。 5 Comment 注释

  • 主要内容:示例XPath表达式通常定义模式以便选择一组节点。 这些模式由XSLT用于执行转换,或者由用于寻址。 XPath规范指定了七种类型的节点,这些节点可以是XPath表达式的执行输出。 根 元素 文本 属性 注释 处理指令 命名空间 XPath使用路径表达式从XML文档中选择节点或节点列表。 以下是从XML文档中选择节点/节点列表的路径和表达式列表。 序号 表达式 描述 1 选择具有给定名称的所有节点。

  • 我有一个XML文件,我正试图解析它以获得名为的标记。 使用xpath和,我可以看到有10个子节点,每个节点都被命名为。但如果我使用以下任何一种XPath,就没有匹配项: 我所做的一切都不是返回任何标记。但是我知道有10个。我可以通过获得,所以我知道我正在连接到这个文件。我如何生成一个xpath来到达每个? XML结构(缩写):

  • 我在库伯内特斯集群中运行3个节点。每个节点都有相同的Pod myApp。我使用NodePort类型创建一个服务,以便所有3个节点都可以从外部访问。服务yaml如下所示 假设3个节点的节点IP端口为: 1.192.168.18.1:30010 2.192.68.18.2:30010 3.192.18.18.3:30010 我的问题是:<br>1.如果所有请求都来自IP为(192.168.18.1:3