2017-03-02 9 views
1

MySQLデータベースから大量のXMLデータを取得し、関連情報を解析しようとしています。私が今までに見たことのないArrayOfStringがありますが、私はその値を使用する必要があります。SimpleXMLのArrayOfStringを解析します。

私はSimpleXMLの__ToString()を含むいくつかの方法を試してみました。これは(string)などでキャスティングしていますが、運がないためです。これを適切に配列に分解できる文字列か、配列に変換できますか?

 $game_ids = $machine_xml->add[25]->attributes()->value[0]; 
     var_dump($game_ids); 

結果:

object(SimpleXMLElement)#2 (1) { 
    [0]=> 
    string(331) "<?xml version="1.0" encoding="utf-16"?> 
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <string>7</string> 
    <string>46</string> 
    <string>4</string> 
    <string>60</string> 
    <string>5</string> 
    <string>23</string> 
    <string>50</string> 
</ArrayOfString>" 
} 

答えて

0

はまず、あなたはXMLに包まれたXMLを持っているようです。

<add value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;ArrayOfString xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt; &lt;string&gt;7&lt;/string&gt; &lt;string&gt;46&lt;/string&gt; &lt;string&gt;4&lt;/string&gt; &lt;string&gt;60&lt;/string&gt; &lt;string&gt;5&lt;/string&gt; &lt;string&gt;23&lt;/string&gt; &lt;string&gt;50&lt;/string&gt; &lt;/ArrayOfString&gt;"> 

だから、あなたがする必要がある最初の事は、XMLのその内側の部分を取得し、SimpleXMLをしてそれを解析です:

$game_ids = $machine_xml->add[25]->attributes()->value[0]; 
$inner_xml = (string)$game_ids; 
$inner_sxe = simplexml_load_string($inner_xml); 

それはあなたのXML文書は、このように、部分的に見えます、ですさて、あなたは非常に単純なXML文書を持っています。<ArrayOfString>要素は、一連の<string>要素を含んでいます。だから、foreachステートメントでそれらをループするだけで、配列に集めることができます:

$array = []; 
foreach ($inner_sxe->string as $string_element) { 
     $string_value = (string)$string_element; 
     $array[] = $string_value; 
} 
関連する問題