2013-03-15 41 views
6

Tôi đã tìm thấy nhiều giải thích về cách SoapClient mong bạn đặt thuộc tính trong yêu cầu, nhưng tôi không thể tìm được cách để đọc thuộc tính từ phản hồi.PHP SoapClient và đọc thuộc tính

Ví dụ, phản ứng SoapClient của tôi có những yếu tố trong đó:

... 
<ns:index> 
    <ns:uid expdate="2013-09-03 14:30:00">JOWtest002</ns:uid> 
    <ns:uid expdate="2013-02-07 15:00:00">JOWtest003</ns:uid> 
</ns:index> 
... 

Tuy nhiên, "expdate" thuộc tính không bao giờ gắn liền với "chỉ số" stdClass

["index"]=> 
    object(stdClass)#80 (1) { 
    ["uid"]=> 
    array(2) { 
    [0]=> 
     string(10) "JOWtest002" 
    [1]=> 
     string(10) "JOWtest003" 
    } 
} 

Tôi đã cố gắng sử dụng một sơ đồ lớp SoapClient để liên kết nó với một đối tượng, nhưng thật không may, WSDL không định nghĩa phần tử "uid" như là một complexType, do đó nó không ánh xạ các thuộc tính. Ràng buộc "chỉ mục" chính nó vào một lớp không hoạt động.

Mọi đề xuất? Tôi thực sự muốn tránh phân tích cú pháp XML bằng cách đưa nó vào SimpleXML hoặc DOMDocument.

+0

Việc sử dụng không gian tên có giúp bạn không? http://stackoverflow.com/q/8525020/1513471 –

+0

Cảm ơn bạn. Bạn có thể làm rõ tại sao không gian tên sẽ là một vấn đề? WSDL định nghĩa các vùng tên gói SOAP thông thường và chúng ta sử dụng một không gian tên khác với khai báo trong ví dụ của tôi ở đây. – voodoodrul

+0

Bởi vì không gian tên trỏ đến các thuộc tính xml đó là lý do tại sao tôi đề xuất không gian tên. –

Trả lời

0

Tôi làm việc khá một chút với XML và đó là một công việc thực sự. Theo kinh nghiệm của tôi, và nếu mở của bạn để sử dụng một thư viện đã viết một trình bao bọc tuyệt vời xung quanh việc xử lý một phản ứng SOAP sẽ là triển khai thư viện XML của Sabre tại số link này.

Thật dễ dàng để gửi và đọc câu trả lời. Tài liệu này thực sự tốt và họ có rất nhiều ví dụ trên trang web của họ sẽ giúp bạn sử dụng thư viện một cách hiệu quả.

+0

Chỉ là một thư viện hữu ích có khá nhiều quyền lực và khả năng mở rộng mà tôi không có cách nào liên kết. Nếu bạn muốn sử dụng máy khách SOAP của PHP và xây dựng lại một thư viện khác xung quanh đó thì hãy trở thành khách của tôi. Tôi sử dụng nó tất cả vì vậy chỉ nghĩ rằng tôi sẽ đề nghị nó. – TesterT

+1

Ok đủ công bằng. Sẽ cố gắng làm cho nó không âm thanh "tờ rơi như" trong tương lai, nhờ phản hồi – TesterT

Các vấn đề liên quan