首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SimpleXML解析ArrayOfString

从SimpleXML解析ArrayOfString
EN

Stack Overflow用户
提问于 2017-03-03 04:13:28
回答 1查看 313关注 0票数 1

我正在从MySQL数据库中获取一大块XML数据,并试图解析出相关信息。有一个我以前从未见过的ArrayOfString,但是我需要从中获取值以供使用。

我尝试了几种方法,包括使用(string)转换SimpleXML的__ToString(),等等,但都没有成功。如何正确地将其转换为可分解为数组的字符串,或仅转换为数组?

代码语言:javascript
复制
        $game_ids = $machine_xml->add[25]->attributes()->value[0];
        var_dump($game_ids);

结果:

代码语言:javascript
复制
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>"
}
EN

回答 1

Stack Overflow用户

发布于 2017-03-03 20:11:27

首先,您似乎将XML包装在XML中。也就是说,您的XML文档在某种程度上如下所示:

代码语言:javascript
复制
<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解析它:

代码语言:javascript
复制
$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语句循环遍历它们,并将其收集到一个数组中:

代码语言:javascript
复制
$array = [];
foreach ( $inner_sxe->string as $string_element ) {
      $string_value = (string)$string_element;
      $array[] = $string_value;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42565069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档