2016-05-24 6 views
0

私の質問に答えがたくさんあります Parse XML namespaces with php SimpleXML私の場合は値を読み取るようにコードを調整する方法を理解できませんか?私は、名前空間メートルを持っている:php SimpleXMLを使用してXMLを複数の名前空間で解析する

$xml = simplexml_load_string($res, NULL, NULL, "http://schemas.xmlsoap.org/soap/envelope/"); 
$xml->registerXPathNamespace('soap', 'http://schemas.xmlsoap.org/soap/envelope/'); 
$xml->registerXPathNamespace('m', 'http://www.w3.org/2001/XMLSchema'); 

foreach($xml->xpath('//m:SaveDocumentsResponse') as $header) 
{ 
    var_export($header->xpath('//m:return')); // Should output 'something'. 

} 
を試してみました私は、このXMLを解析し、のみも888から0000019749

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
     <soap:Body> 
     <m:SaveDocumentsResponse xmlns:m="http://www.cargo3.ru"> 
      <m:return xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
       <m:Key>SaveDocuments</m:Key> 
       <m:List> 
        <m:Key>Order</m:Key> 
        <m:Properties> 
         <m:Key>Number</m:Key> 
         <m:Value xsi:type="xs:string">888-0000019749</m:Value> 
         <m:ValueType>string</m:ValueType> 
        </m:Properties> 
        <m:Properties> 
         <m:Key>CreateDate</m:Key> 
         <m:Value xsi:type="xs:dateTime">2016-05-23T20:56:50</m:Value> 
         <m:ValueType>dateTime</m:ValueType> 
        </m:Properties> 
       </m:List> 
      </m:return> 
     </m:SaveDocumentsResponse> 
     </soap:Body> 
</soap:Envelope> 

値を抽出する必要が は parse an XML with SimpleXML which has multiple namespaces この例を動作するように管理することはできません:名前空間石鹸の内側

は再び私は何かが欠けている...

と再び

を3210

私はあなたのXMLデータに応じた適切な名前空間URIに接頭辞をマップする必要が

<m:Value xsi:type="xs:dateTime">2016-05-23T20:56:50</m:Value> 
+0

こんにちは、私はしないでくださいそのためにSimpleXmlについてよく知っている。私はDomDocumentの使い方を知っています – Richard

+0

こんにちは!どんな方法でも私にはいくつかの経験がもたらされます。どんな実際の例も歓迎されています.. – vyazikov

+0

以下の例を確認してください。http://php.net/manual/en/domxpath.registernamespace.php – Richard

答えて

0

から値を抽出するための最短かつ最も簡単な方法が必要です。だからあなたのXMLによると、あなたの接頭辞はURI 'http://www.cargo3.ru' にマップする必要があります。

$xml->registerXPathNamespace('m', 'http://www.cargo3.ru'); 

foreach($xml->xpath('//m:SaveDocumentsResponse') as $header) 
{ 
    var_export($header->xpath('//m:return')); // Should output 'something'. 
} 

eval.in demo

出力:

array (
    0 => 
    SimpleXMLElement::__set_state(array(
)), 
) 
関連する問題