2012-10-30 12 views
7

Mam problemy z używaniem edytora MockOperation w Soap UI.Sposób korzystania z Query_Match w przypadku interfejsu Soap

Mam prośbę:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
    <methodName xmlns="http://tempuri.org/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
     <dataAreaId>error</dataAreaId> 
     <pInvoiceList> 
     <dataAreaId>NOTTHESAME</dataAreaId> 
     ... 
     </pInvoiceList> 
    </methodName> 
    </s:Body> 
</s:Envelope> 

Próbowałem prawie każdy wyrażenie XPath ale zawsze „Missing mecz we wniosku”

Co wypełnić pole XPath?

Próbowałem:

  • // dataAreaId/text()
  • // dataAreaId/
  • // dataAreaId
  • /dataAreaId/text()
  • /dataAreaId
  • /methodName/dataAreaId/text()
  • /methodName/dataAreaId/
  • /methodName/dataAreaId
+0

Czy chcesz węzeł, wszystkie węzły o tej nazwie lub tylko tekst w węźle? Ponadto wyrażenie XPath z "/" jest nieprawidłowe. – JWiley

+0

Chcę, aby tekst pierwszego z nich był – amaters

Odpowiedz

11

I wreszcie udało się go na podstawie odpowiedzi z user1740631

Wydaje I miał do czynienia z nazw przecież.

Poprawna składnia:

+0

Tak, to było to. Dość denerwujące, że ich strona internetowa nie daje tej wskazówki. Mój wynik XML nie zawiera prefiksów przestrzeni nazw, ale nadal wymagał, aby utworzyć wirtualny obszar nazw, jak zasugerowałeś powyżej. – djangofan

4

pisać jak to

dla pierwszy

// methodName [1]/dataAreaId [1]

Na drugie jeden

// methodName [1]/pInvoiceList [1]/dataAreaId [1]

* Jeśli masz wiele węzłów z tym samym name w Xml, powinieneś użyć liczb do zlokalizowania tego konkretnego węzła.

+0

Próbowałem tego. Wciąż bez rezultatu. Czy może to być spowodowane brakującymi przestrzeniami nazw, czy też sugeruję coś naprawdę głupiego? – amaters

+1

powinieneś zawsze zdefiniować przestrzeń nazw przed napisaniem xpath ..... – pshekhar

0

Istnieje duża wskazówka: Podczas definiowania twierdzenie o TESTCASE (lub być może również w Mock-Window) znajduje się przycisk „Declare” nad XPath wyrażenie -Pole. To naprawdę nie wygląda jak przycisk, dopóki nie wskażesz na niego wskaźnikiem myszy, więc nie zdawałem sobie z tego sprawy na początku.

Wystarczy kliknąć na przycisk SoapUI (faktycznie używam 5.2.1), aby dodać oświadczenia-oświadczenia dla ciebie, których możesz użyć.

Znalazłem tę funkcję przypadkowo, ponieważ nie jest to naprawdę widoczne. Może to pomoże również ...

2

Jeśli nie dbają o przestrzeniach nazw można użyć następującej składni:

XPath1.0

//*[local-name() = 'methodName']/*[local-name() = 'dataAreaId'][1] 

XPath2.0

//*:methodName/*:dataAreaId[1] 
Powiązane problemy