Domanda

Dato un documento XML come

<root>
  <row>
    <a>2</a>
    <b>1</b>
    <c>8</c>
  </row>
  <row>
    <b>5</b>
    <a>2</a>
    <c>8</c>
  </row>
  <row>
    <a>2</a>
    <c>8</c>
    <b>6</b>
  </row>
</root>

C'è un modo semplice per affermare che il documento XML viene ordinato in base elemento B in XMLUnit

Modifica: Ho un problema strano con un pezzo di software che non posso cambiare, dove il valore dei tag XML in una data necessità nodo di essere in un ordine specifico. Mi piacerebbe che per il mio test harness di far rispettare questo insieme di regole prima di ogni altra convalida.

È stato utile?

Soluzione

Usa il valore della seguente semplice XPath 1.0 espressione :

not(//b[. > following::b])

Altri suggerimenti

Si può costruire un'affermazione intorno a una selezione XPath.

Probabilmente il modo più semplice sarebbe quella di utilizzare il /root/row/b espressione XPath, chiedere il tipo di risultato NODESET, quindi copiare il testo da ogni nodo risultato in una struttura List. Si può affermare che il testo in quella lista è uguale a un elenco "previsto" creata con il metodo Arrays.asList() (sto supponendo che si sta utilizzando Java).

Se è possibile eseguire XQuery, quindi l'affermazione XQuery:

every $i in (1 to count ($x/row) - 1)
satisfies 
   let $j :=  $i + 1   
   return number($x/row[$i]/b) <= number($x/row[$j]/b)

dove $ x è il documento, è vero se le righe sono in ordine crescente di b, altrimenti false

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top