【问题标题】:PHP: Issue extracting information from XML to create JSONPHP:从 XML 中提取信息以创建 JSON 的问题
【发布时间】:2012-05-29 14:50:29
【问题描述】:

我需要从在线获取的 XML 中提取一些数据并从结果中创建 JSON。

这是我遇到的问题的简化版本:

$XML=simplexml_load_file("http://somewhere.on.the.net/my.xml");
$result = array();

$tmpp = $XML->S->S["time"];
echo $tmpp.'<br/>';;

$result['DATE'] = $tmpp;
echo json_encode($result);

我明白了:

2012-05-29
{"DATE":{"0":"2012-05-29"}}

我想要:

{"DATE":"2012-05-29"}

我怎样才能做到这一点?谢谢。

更新

这是 XML 的结构:

<g:e>
<S>
 <S time="2012-05-29">
   <S info1="a" info2="b"/>
   <S info1="d" info2="m"/>
   <S info1="q" info2="l"/>
   ...
 </S>
 <S time="2011-04-09">
   <S info1="a" info2="z"/>
   ...
   </S>
 </S>
 ...
</S>
</g:e>

【问题讨论】:

    标签: php xml json


    【解决方案1】:

    看起来您可能需要从 XML 节点获取字符串值:

    // Cast the value to a string.
    $tmpp = (string)$XML->S->S["time"];
    

    当您 echo 时,它看起来像一个裸日期值,因为 SimpleXML 在对象上实现了自定义 __toString(),但如果您 var_dump($XML-&gt;S-&gt;S["time"]),您将看到它不仅仅是日期字符串。

    【讨论】:

    • 将值转换为字符串就可以了。谢谢。
    【解决方案2】:

    尝试使用 $tmpp 变量的第一个键。

    $result['DATE'] = $tmpp[0];
    

    【讨论】:

      猜你喜欢
      • 2015-09-09
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多