Sau khi dành SEVERAL giờ thất vọng về điều này, tôi yêu cầu sự giúp đỡ của bạn.Phản hồi SOAP SimpleXML Các vấn đề về không gian
Tôi đang cố gắng lấy nội dung của các nút cụ thể từ phản hồi SOAP.
Câu trả lời là
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="<a href="http://www.w3.org/2003/05/soap-envelope">http://www.w3.org/2003/05/soap-envelope</a>"<xmlns:ns1="<a href="http://soap.xxxxxx.co.uk/">http://soap.xxxxxx.co.uk/</a>">
<env:Body>
<ns1:PlaceOrderResponse>
<xxxxxOrderNumber></xxxxxOrderNumber>
<ErrorArray>
<Error>
<ErrorCode>24</ErrorCode>
<ErrorText>The+client+order+number+3002254+is+already+in+use</ErrorText>
</Error>
<Error>
<ErrorCode>1</ErrorCode>
<ErrorText>Aborting</ErrorText>
</Error>
</ErrorArray>
</ns1:PlaceOrderResponse>
</env:Body>
</env:Envelope>
tôi đang cố gắng để có được tại các nút và trẻ em của < ErrorArray>. Do không gian tên XML chứa
$XmlArray = new SimpleXMLElement($XmlStr);
foreach ($XmlArray->env:Envelope->env:Body->ns1:PlaceOrderResponse->ErrorArray->Error as $Error)
{
echo $Error->ErrorCode."<br />";
}
không hoạt động. Tôi đã đọc một số điều như
- http://www.sitepoint.com/blogs/2005/10/20/simplexml-and-namespaces/
- http://blog.stuartherbert.com/php/2007/01/07/using-simplexml-to-parse-rss-feeds/
và khoảng 20 câu hỏi trên trang web này, mà tiếc là không giúp đỡ.
Thậm chí viết,
$XmlArray = new SimpleXMLElement($XmlStr);
echo "<br /><br /><pre>\n";
print_r($XmlArray);
echo "<pre><br /><br />\n";
cho
SimpleXMLElement Object
(
)
mà làm cho tôi tự hỏi, nếu phản ứng xà phòng ($ XmlStr) thực sự là một đầu vào hợp lệ cho SimpleXMLElement.
Dường như dòng
$XmlArray = new SimpleXMLElement($XmlStr);
không làm những gì tôi mong đợi nó.
Bất kỳ trợ giúp nào về cách nhận các nút từ XML ở trên sẽ rất được hoan nghênh. Rõ ràng làm cho nó hoạt động (có một ví dụ làm việc) là những gì tôi cần trong ngắn hạn, nhưng nếu ai đó có thể giúp tôi hiểu những gì tôi đang làm sai sẽ tốt hơn trong thời gian dài.
Chúc mừng. Stu
THANK YOU !, Tôi đã rất gần. Tôi đã xem xét phương thức children() và đang sử dụng số foreach ($ XmlArray-> children ('env', true) -> Envelope-> children ('env', true) -> Body- > trẻ em ('ns1', đúng) -> PlaceOrderResponse-> ErrorArray-> Lỗi là $ Error) Một lần nữa, cảm ơn bạn :-) Ps các thẻ để định dạng mã chính xác trên stackoverflow là gì? Tôi không thể tìm thấy nó ở bên cạnh. – Stu
@Stu Bạn chỉ cần nhấn nút 0101 với mã được chọn. Nhân tiện, nếu câu trả lời thực sự đạt yêu cầu, bạn nên chấp nhận nó. – Artefacto