我正在从MySQL数据库中获取一大块XML数据,并试图解析出相关信息。有一个我以前从未见过的ArrayOfString,但是我需要从中获取值以供使用。
我尝试了几种方法,包括使用(string)转换SimpleXML的__ToString(),等等,但都没有成功。如何正确地将其转换为可分解为数组的字符串,或仅转换为数组?
$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>"
}发布于 2017-03-03 20:11:27
首先,您似乎将XML包装在XML中。也就是说,您的XML文档在某种程度上如下所示:
<add value="<?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>">因此,您需要做的第一件事是获取XML的内部片段,并使用SimpleXML解析它:
$game_ids = $machine_xml->add[25]->attributes()->value[0];
$inner_xml = (string)$game_ids;
$inner_sxe = simplexml_load_string($inner_xml);现在,您有了一个相当简单的XML文档:一个包含一系列<string>元素的<ArrayOfString>元素。因此,您只需使用foreach语句循环遍历它们,并将其收集到一个数组中:
$array = [];
foreach ( $inner_sxe->string as $string_element ) {
$string_value = (string)$string_element;
$array[] = $string_value;
}https://stackoverflow.com/questions/42565069
复制相似问题