2012-10-30 36 views
7

Tôi gặp sự cố khi sử dụng Trình chỉnh sửa MockOperation trong giao diện người dùng Soap.Cách sử dụng Query_Match cho giao diện người dùng Soap

tôi đã nhận được yêu cầu này:

<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> 

tôi đã cố gắng hầu hết các biểu thức XPath nhưng tôi luôn nhận được "Thiếu trận đấu trong yêu cầu"

gì để điền vào các XPath hộp?

tôi đã cố gắng:

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

Bạn có muốn nút, tất cả các nút theo tên đó hoặc chỉ văn bản trong nút không? Ngoài ra, XPath kết thúc bằng '/' không hợp lệ. – JWiley

+0

Tôi muốn văn bản của câu hỏi đầu tiên – amaters

Trả lời

11

Cuối cùng tôi đã tìm được câu trả lời dựa trên câu trả lời từ người dùng1740631

Dường như tôi phải làm gì với không gian tên sau đó.

Cú pháp đúng:

+0

Vâng, đó là nó. Khá khó chịu rằng trang web của họ không đưa ra gợi ý này. Kết quả XML của tôi không chứa tiền tố không gian tên, nhưng nó vẫn yêu cầu tôi tạo một không gian tên ảo như bạn đã đề xuất ở trên. – djangofan

4

Viết như thế này

Đối Đầu Một

// methodName [1]/dataAreaId [1]

Đối Second một

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

* Nếu bạn có nhiều nút với cùng một nút tên trong Xml thì bạn nên sử dụng các số để xác định vị trí nút cụ thể đó.

+0

Đã cố gắng điều này. Vẫn không có kết quả. Nó có thể là do thiếu không gian tên hoặc tôi đề xuất một cái gì đó thực sự ngu ngốc ở đây? – amaters

+1

bạn nên luôn luôn xác định không gian tên trước khi viết các xpath ..... – pshekhar

0

Có một gợi ý tốt: Khi xác định một Assertion cho một testcase (hoặc có thể còn ở Mock-Window) có một nút "Khai báo" phía trên XPath-Biểu hiện -Cánh đồng. Nó không thực sự trông giống như một nút, cho đến khi bạn trỏ chuột với nó, vì vậy tôi đã không nhận ra nó lúc đầu.

Chỉ cần nhấp vào nút SoapUI (thực sự tôi sử dụng 5.2.1) sẽ thêm tuyên bố-tuyên bố cho bạn, bạn có thể sử dụng.

Tôi đã tìm thấy tính năng đó một cách trùng hợp, vì nó không thực sự hiển thị. Có lẽ điều này có thể giúp cũng ...

2

Nếu bạn không quan tâm đến không gian tên bạn có thể sử dụng cú pháp sau:

XPath1.0

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

XPath2.0

//*:methodName/*:dataAreaId[1] 
Các vấn đề liên quan