Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中从XML节点获取数据_Php_Xml_Simplexml - Fatal编程技术网

在php中从XML节点获取数据

在php中从XML节点获取数据,php,xml,simplexml,Php,Xml,Simplexml,我正在从url检索XML数据,我想从特定节点提取数据 这是我的XML数据 <person> <first-name>ABC</first-name> <last-name>XYZ</last-name> </person> 那么我哪里出了问题呢?试着用这个: <person> <firstname>ABC</firstname> <lastname>XYZ&l

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

这是我的XML数据

<person>
  <first-name>ABC</first-name>
  <last-name>XYZ</last-name>
</person>
那么我哪里出了问题呢?

试着用这个:

<person>
  <firstname>ABC</firstname>
  <lastname>XYZ</lastname>
</person>
这将与此相呼应:

firstname: 
lastname: 
other: 111
如果要创建第一个节点,只需执行以下操作:

echo $xml->firstname

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

如前所述,您不能在变量名中使用
-
。从我收集的信息来看,您只是想打印出标记名和值。如果是这样的话,你很可能想要:

foreach($xml->children() as $child)
{
    echo "{$child->getName()}: $child <br />";
}
foreach($xml->children()作为$child)
{
echo“{$child->getName()}:$child
”; }
没有。它没有。$child->getName只返回节点名。但是$child->firstname或$child->firstname不会返回节点的数据当然是。我正在尝试打印标记值。它确实奏效了。感谢you@juco:请用这些常见问题发表评论并链接到现有答案。另请参阅
<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
foreach($xml->children() as $child)
{
    echo "{$child->getName()}: $child <br />";
}