X Path基于子值选择

  • 本文关键字:选择 Path xml xpath
  • 更新时间 :
  • 英文 :


这是一些xml:

<books>
    <book>
        <author>Tom</author>
        <genres>
            <genre>Science</genre>
            <genre>Romance</genre>
        </genres>
    </book>
    <book>
        <author>Mike</author>
        <genres>
            <genre>Politics</genre>
            <genre>Romance</genre>
        </genres>
    </book>
</books>

我如何定义一个X Path以使其拉动所有浪漫书籍?还是所有浪漫和政治书籍?

您可以分别使用//book[./genres/genre = 'Romance']//book[./genres/genre = 'Romance' and ./genres/genre = 'Politics']

浪漫类型中的所有书籍

//book[genres/genre = 'Romance']

浪漫中的所有书籍

//book[genres/genre = 'Romance' and genres/genre = 'Politics']

浪漫中的所有书籍也属于政治类型(与上面的and相同)

//book[genres/genre = 'Romance'][genres/genre = 'Politics']

浪漫中的所有书籍政治类型

//book[genres/genre = 'Romance' or genres/genre = 'Politics']

浪漫中的所有书籍政治类型(仅X Path 2.0):

//book[genres/genre = ('Romance', 'Politics')]

注意:

  1. //book找到所有book元素元素;/books/book找到所有book books根的孩子元素。对于给定的XML,他们选择相同的元素。
  2. 您可以将/author附加到以上任何XPath以选择 author指定条件的书籍元素。

难以使它起作用?

首先,确定基本XPath有效://book应返回两个元素。

如果没有:

  1. 仔细检查XPath表达式和XML。
  2. 检查案例。XML和XPATH对案例敏感。
  3. 检查是否没有命名空间在玩。名称空间实际上是元素和属性的一部分,必须考虑到为了。看XPath如何处理XML名称空间?

然后,从那里添加XPath步骤:

  1. //book[genres]应使用任何genres选择book元素子元素。

  2. //book[genres/genre]应该选择 book元素 genres儿童元素,只有依次有genre儿童元素。

  3. //book[genres/genre = 'Romance']应该选择根据要求,浪漫类型。请注意,必须引用'Romance';否则,该表达式将针对字符串值进行测试 Romance book的子元素,肯定会失败。

最新更新