鉴于以下内容
<data type="new">
<time>1</time>
<time>2</time>
</data>
<data type="old">
<time>3</time>
<time>4</time>
</data
目标是在下面输入内容
<?php
$test = simplexml_load_file('http://....')
echo $test->data['type="old"']->time[0] //I want this to return 3
?>
并获得3的值! 我讨厌尝试使用属性,但我仍然在寻找解决方案。
谢谢, JTC
我试图从
解析的实际文档<data type="current observations">
<time-layout time-coordinate="local">
<start-valid-time period-name="current">2013-05-27T13:53:00-04:00</start-valid-time>
</time-layout>
</data>
我尝试了以下操作但获得了无效的表达式警告。
$weather = simplexml_load_file('http://...');
$time=$weather->xpath('//data[@type="current observations"]/"time-layout"/"start-valid- time"');
echo $time[0];
答案 0 :(得分:1)
这是使用SimpleXMLElement和XPath的code snippet。我添加了一个根datas
节点,因此可以解析XML,我猜你的结构很好。
<?php
$xml = <<<XML
<datas>
<data type="new">
<time>1</time>
<time>2</time>
</data>
<data type="old">
<time>3</time>
<time>4</time>
</data>
</datas>
XML;
$sxe = new SimpleXMLElement($xml);
$time = $sxe->xpath('//data[@type="old"]/time');
echo $time[0];
3
答案 1 :(得分:0)
好的,拿着格式正确的XML文档,你可以做到这一点......
$data = $weather->xpath('/data[@type="current observations"]');
$time_layout = $data[0]->xpath('time-layout[@time-coordinate="local"]');
$start_valid_time = $time_layout[0]->xpath('start-valid-time[@period-name="current"]');
echo (string)$start_valid_time[0];
在行动here中查看。