从php中的XML节点获取数据

时间:2013-04-07 14:57:15

标签: php xml simplexml

我正在从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'

那我哪里错了?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如前所述,您不能在变量名中使用-。从我可以收集的内容来看,您只是想打印出标签名称和值。如果是这样,你可能会在此之后:

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