2012-05-29 46 views
1

我需要从联机提取的XML中提取一些数据并从结果中创建JSON。PHP:从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> 

回答

3

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

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

它看起来像一个裸号日期值,当你echo它,因为SimpleXML实现了一个自定义__toString()对象,但如果你var_dump($XML->S->S["time"])你会看到有更多的不仅仅是日期字符串。

+0

将值转换为字符串做到了。谢谢。 – JVerstry

0

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

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

我试过了,但并没有解决问题。 – JVerstry