[英]PHP - Parse XML contained within XML element and Output into XML doc
[英]PHP parse XML within XML
我有一個XML文件,其中包含XML。 我將如何將所有內容解析為數組或對象?
<DATA>
<ROW>
<id>1</id>
<message_id>123456789</message_id>
<brand_name>SAMPLE</brand_name>
<request_xml>
<?xml version="1.0" encoding="UTF-8"?>
<Email>
<Service>
<LogMessage/>
<Delivery>
<Synchronous/>
</Delivery>
</Service>
<Model>
<Head>
<From>someone@example.com </From>
<To>someone@sample.com</To>
<Subject>Your Question</Subject>
</Head>
<ns2:ContactUs>
<ns2:Sender>
<ns2:FirstName>John</ns2:FirstName>
</ns2:Sender>
</ns2:ContactUs>
</Model>
<InlineImages/>
<History/>
</Email>
</request_xml>
<http_status>400</http_status>
<created_by>admin</created_by>
<created_on>2014-09-08 01:56:59</created_on>
</ROW>
</DATA>
我的目標是最終得到這樣的東西:
SimpleXMLElement Object
(
[ROW] => SimpleXMLElement Object
(
[id] => 1
[message_id] => 123456789
[brand_name] => SAMPLE
[request_xml] => SimpleXMLElement Object
(
...
[LogMessage] =>
...
[from] => someone@example.com
...
)
[http_status] => 400
[created_by] => admin
[created_on] => 2014-09-08 01:56:59
)
)
我沒有在示例中放入所有級別的request_xml
,但是您明白了。 基本上,我希望像其他XML文件一樣對request_xml
進行解析。
我怎樣才能做到這一點? 在此先感謝您的任何幫助!
如果您讀取request_xml
元素節點的節點值,那么結果將被解碼。
$outer = new DOMDocument();
$outer->loadXml($xml);
$xpath = new DOMXpath($outer);
$innerXml = $xpath->evaluate('string(/DATA/ROW/request_xml)');
echo $innerXml;
輸出:
<?xml version="1.0" encoding="UTF-8"?>
<Email>
<Service>
<LogMessage/>
...
您可以將內部xml加載到單獨的文檔對象中。
$inner = new DOMDocument();
$inner->loadXml(trim($innerXml));
echo $inner->saveXml();
但是在您的示例中,內部XML已損壞。 它缺少ns2前綴的名稱空間定義。 如果添加,它將起作用:
演示: https : //eval.in/191279
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.