1

我正在从 url 检索 XML 数据,我想从特定节点中提取数据。

这是我的 XML 数据

<person>
  <first-name>ABC</first-name>
  <last-name>XYZ</last-name>
</person>

这是我的 PHP 代码:

$content = file_get_contents($url);

$xml = simplexml_load_string($content);

foreach($xml->children() as $child)
  {
  echo $child->getName() . ": " . $child->first-name . "<br>";
  }

PHP 返回此错误:

Use of undefined constant name - assumed 'name'

那么我哪里错了?

4

3 回答 3

0

尝试使用这个:

<person>
  <firstname>ABC</firstname>
  <lastname>XYZ</lastname>
</person>

进而 :

$content = file_get_contents($url);

$xml = simplexml_load_string($content);

foreach($xml->children() as $child)
  {
  echo $child->getName() . ": " . $child->firstname . "<br>";
  }

它有效吗?

编辑:您将没有任何数据,$xml->children()因为您没有任何数据。尝试做这样的事情:

<person>
  <firstname>ABC</firstname>
  <lastname>XYZ</lastname>
  <other>
    <first>111</first>
    <second>222</second>
  </other>
</person>

<?php 
$content = file_get_contents("test.xml");

$xml = simplexml_load_string($content);

foreach($xml->children() as $child)
{   
    echo $child->getName() . ": " .$child->first . "<br>";
}

 ?>

这将呼应:

firstname: 
lastname: 
other: 111

我想拥有第一个节点,您可以简单地执行以下操作:

echo $xml->firstname
于 2013-04-07T15:01:49.560 回答
0

'-'不允许在变量名中使用。$child->first-name被解释为$child->first minus name。您应该找到另一种获取内容的方法。

于 2013-04-07T15:04:17.823 回答
0

如前所述,您不能-在变量名中使用。不过,据我所知,您只是想打印出标签名称和值。如果是这样,您可能在此之后:

foreach($xml->children() as $child)
{
    echo "{$child->getName()}: $child <br />";
}
于 2013-04-07T15:07:51.290 回答