2017-03-02 1 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;"> 

그래서 당신은 SimpleXML을 함께 XML의 내부 조각을 얻을 수있다 수행하고 분석해야 할 첫 번째 일은 :

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

그게 당신의 XML 문서는 다음과 같이 부분적으로 보이는 것입니다 이제는 매우 간단한 XML 문서가 있습니다 : 요소를 포함하는 단일 <ArrayOfString> 요소. 따라서 foreach 문을 사용하여 루프를 반복하고 배열로 수집 할 수 있습니다.

$array = []; 
foreach ($inner_sxe->string as $string_element) { 
     $string_value = (string)$string_element; 
     $array[] = $string_value; 
} 
관련 문제