给定以下
<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];
下面是使用SimpleXMLElement和XPath的代码片段。我已经添加了一个根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
以格式良好的实际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];