Tôi có XML xấu xí này có rất nhiều không gian tên trên đó, khi tôi cố gắng tải nó bằng simpleXML nếu tôi cho biết không gian tên đầu tiên tôi nhận được đối tượng xml, nhưng các thẻ sau với các không gian tên khác sẽ không đưa nó vào đối tượng.phân tích cú pháp XML bằng SimpleXML có nhiều không gian tên
Tôi làm cách nào để phân tích cú pháp XML này?
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1.0" soap-env:mustUnderstand="1">
<eb:From>
<eb:PartyId eb:type="URI">wscompany.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">mysite.com</eb:PartyId>
</eb:To>
<eb:CPAId>something</eb:CPAId>
<eb:ConversationId>moredata.com</eb:ConversationId>
<eb:Service eb:type="compXML">theservice</eb:Service>
<eb:Action>theaction</eb:Action>
<eb:MessageData>
<eb:MessageId>a certain messageid</eb:MessageId>
<eb:Timestamp>2009-04-11T18:43:58</eb:Timestamp>
<eb:RefToMessageId>mid:areference</eb:RefToMessageId>
</eb:MessageData>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">an impresive binary security toekn</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<SessionCreateRS xmlns="http://www.opentravel.org/OTA/2002/11" version="1" status="Approved">
<ConversationId>the goodbye token</ConversationId>
</SessionCreateRS>
</soap-env:Body>
</soap-env:Envelope>
im cố gắng để phân tích nó với đoạn mã sau
<?php
$xml = simplexml_load_string($res,NULL,NULL,"http://schemas.xmlsoap.org/soap/envelope/");
?>
nhưng đối tượng $ xml sẽ chỉ chứa những điều sau
SimpleXMLElement Object
(
[Header] => SimpleXMLElement Object
(
)
[Body] => SimpleXMLElement Object
(
)
)
Đơn giản chỉ cần Brillian bạn không chỉ giúp tôi giải quyết vấn đề của tôi mà còn làm sáng tỏ cách thức xpath làm việc :) cảm ơn! – perrohunter
Không cần chuyển sang XPath chỉ vì bạn đang sử dụng không gian tên. – IMSoP
Nếu bạn đang sử dụng XPath, thì bạn cần phải đăng ký không gian tên một cách rõ ràng như trong mã của bạn ở trên, nếu không xảy ra lỗi. – Bobulous