具有以下兄弟的所有元素都等于它

时间:2016-01-07 16:18:49

标签: xpath xpath-2.0

我的XML结构:

<root>
  <!-- First -->
  <A>
      <B>123</B>
      <C>456</C>
  </A>

  <!-- Second -->
  <A>
      <B>999</B>
      <C>456</C>
  </A>

  <!-- Third -->
  <A>
      <B>123</B>
      <C>456</C>
  </A>

  <!-- Fourth-->
  <A>
      <B>123</B>
      <C>999</C>
  </A>

  <!-- Fifth -->
  <A>
      <X>123</X>
      <Y>456</Y>
  </A>
</root>

我想找到所有A元素,这些元素都有跟随它的兄弟姐妹。

所需的结果只是第一个元素,因为它等于第三个元素。

我试过这个:

//A[.= following-sibling::A]

但结果我得到了第一个和第三个元素。我猜第三个元素匹配第五个元素,因为=运算符只是比较字符串值,对吧?你能救我吗?

我甚至可以在XPath中计算匹配元素的位置,还是必须在XSL for循环中搜索它?

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找deep-equal功能,请参阅//A[some $sibling in following-sibling::A satisfies deep-equal(. ,$sibling)],您可以在# To send messages asynchronously producer = SimpleProducer(kafka, async=True) producer.send_messages("my-topic", "async message") # To consume messages, consumer1 consumer1 = SimpleConsumer(kafka, "my-group", "my-topic") for message in consumer1: print(message) 中使用。