Differenza tra //, .// e ..// in XPath?

Sep 22 2020

Qualcuno può aiutarmi con la differenza tra i seguenti XPath e aiutarmi a capire quale di questi usare quando. Ho scoperto che funzionano tutti e tre, ma non sono sicuro di quando usarli.

  1. Get Element Text ${output} //priority

  2. Get Element Text ${output} .//vrrp-group/name

  3. Get Element Text ${output} ..//track/priority-hold-time

Risposte

2 kjhughes Sep 22 2020 at 20:57

In generale

//seleziona tra discendente o auto nodi (lungo l' descendant-or-selfasse ). È l'abbreviazione di /descendant-or-self::node()/.

  1. // parte dal nodo radice, coprendo così l'intero documento.
  2. .//parte dal nodo del contesto .
  3. ..// inizia dal genitore del nodo di contesto.

Nel tuo caso particolare

  1. //priorityseleziona tutti gli priorityelementi nel documento.
  2. .//vrrp-group/nameseleziona, sotto il nodo del contesto, tutti gli nameelementi con un vrrp-groupgenitore.
  3. ..//track/priority-hold-timeseleziona, sotto il genitore del nodo di contesto, tutti gli priority-hold-timeelementi con un trackgenitore.

Nota Robotframework:

Nel contesto del Get Element Textcomando della libreria XML Robotframework, XPath deve essere relativo al nodo di origine ( ${output}nel tuo caso). XPath assoluti come //prioritynon sono consentiti lì.

Guarda anche

  • Differenza tra "//" e "/" in XPath?
  • Qual è la differenza tra .// e // * in XPath?
  • Qual è il significato di .// in XPath?