मेरे पास यह बदसूरत एक्सएमएल है जिसमें उस पर नेमस्पेस हैं, जब मैं इसे सरल एक्सएमएल के साथ लोड करने का प्रयास करता हूं, तो अगर मैं पहला नेमस्पेस इंगित करता हूं तो मुझे एक्सएमएल ऑब्जेक्ट मिल जाएगा, लेकिन टैग के बाद अन्य नामस्थानों के साथ यह वस्तु को नहीं बनायेगा।सिंपलएक्सएमएल के साथ एक एक्सएमएल पार्स करें जिसमें एकाधिक नेमस्पेस हैं
मैं इस XML को कैसे पार्स कर सकता हूं?
<?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 निम्नलिखित कोड
<?php
$xml = simplexml_load_string($res,NULL,NULL,"http://schemas.xmlsoap.org/soap/envelope/");
?>
लेकिन $ एक्सएमएल वस्तु के साथ यह पार्स करने के लिए केवल होते हैं निम्नलिखित
SimpleXMLElement Object
(
[Header] => SimpleXMLElement Object
(
)
[Body] => SimpleXMLElement Object
(
)
)
सीधे शब्दों में brillian आप न केवल मुझे मेरी समस्या का समाधान में मदद की, लेकिन यह भी स्पष्ट किया है कि कैसे xpath काम किया :) धन्यवाद! – perrohunter
XPath पर स्विच करने की कोई आवश्यकता नहीं है क्योंकि आप नामस्थान का उपयोग कर रहे हैं। – IMSoP
यदि आप XPath का उपयोग कर रहे हैं, तो आपको ऊपर दिए गए कोड में स्पष्ट रूप से नेमस्पेस पंजीकृत करने की आवश्यकता है, अन्यथा विफलता होती है। – Bobulous