2012-04-04 8 views
0

Ich verwende TinyXPath, um ein vorhandenes Testwerkzeug zu verbessern, so dass Daten aus einer XML-Struktur des Kunden abgerufen und verwendet werden können.In TinyXPath Abfragen von Daten nach Elementinhalt indexiert

Die XML sieht wie folgt aus

<Platform> 
    <LinkData> 
    <Plan> 
     <Label>A</Label> 
     <Settings> 
      <SomeSetting1>ENABLED</SomeSetting1> 
      <SomeSetting2>ENABLED</SomeSetting2> 
     </Settings> 
    </Plan> 
    <Plan> 
     <Label>B</Label> 
     <Settings> 
      <SomeSetting1>ENABLED</SomeSetting1> 
      <SomeSetting2>DISABLED</SomeSetting2> 
     </Settings> 
    </Plan> 
    </LinkData> 
</Platform> 

die obige Struktur gegeben, die ich keine Kontrolle über haben, ich muss in der Lage sein, XPath-Ausdrücke für TinyXPath zu konstruieren. Einfach ausgedrückt muss TinyXPath die Werte in den SomeSetting1/2-Feldern zurückgeben, die angegeben werden, wenn die korrekten untergeordneten Label-Werte übereinstimmen (auf True auflösen), sodass die Test-App sie verwenden kann. .

Ich habe versucht, die folgenden aber eine mit der Art und Weise kämpfen indiziert ist ein untergeordnetes Element mit (normalerweise würde ich die Verwendung eines Attributs erwarten Hier ist mein Versuch, die zu keinem Ergebnis geführt (zB aktiviert/deaktiviert) zurückgibt: -

Platform/LinkData/Plan[child::Label='A']/Settings/SomeSetting1/text() 
Platform/LinkData/Plan[child::Label='A']/Settings/SomeSetting2/text() 
Platform/LinkData/Plan[child::Label='B']/Settings/SomeSetting1/text() 
Platform/LinkData/Plan[child::Label='B']/Settings/SomeSetting2/text() 

Jede weitere Hilfe von TinyXPath Gurus geschätzt würde viel - dank

+0

// Einstellungen/Kind :: Node() (fügen Sie/Text() an das Ende, wenn Sie nur den Enabled/Disabled Text anstelle von Knoten wollen) Oder versuchen Sie nur Etiketten A und B zu bekommen? – JWiley

+0

Der Test muss die Textwerte für SomeSetting1 & 2 zunächst für den Plan 'Labeled' A und dann für den Plan 'Labeled' zurückgeben. Danke. – mactwixs

Antwort

0

Dieser XPath zurückkehren, was Sie suchen mit dem angegebenen XML:

//Settings/child::node()/text() 

//LinkData/Plan[Label/text()='A']/Settings/child::node()/text() | //LinkData/Plan[Label/text()='B']/Settings/child::node()/text() 

Und dieser verbindet sie sowohl innerhalb der Label Check:

Diese XPath wird auch einen Scheck für Labels und Gruppe von Concat | hinzufügen

//LinkData/Plan[Label/text()='A' or Label/text()='B']/Settings/child::node()/text() 

hoffe, das hilft!

+0

Vielen Dank Ich werde versuchen, dass später heute – mactwixs

+0

konnte nicht tinyxpath erhalten, um ein Ergebnis von oben zurückzugeben. Obwohl ich // LinkData/Plan/Label/text() zum Arbeiten bekommen kann - gibt A, B, C usw. zurück, aber das Hinzufügen von [] in die Abfrage scheint es zu stören. – mactwixs

Verwandte Themen