0

鉴于以下

<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];
4

2 回答 2

1

这是使用 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
于 2013-05-27T19:24:03.003 回答
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];

在这里查看它的实际应用。

于 2013-05-27T19:24:21.843 回答