我正在从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'
那我哪里错了?
答案 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 />";
}