Php 如何使用simplexml解析xml?
我试图解析以下xml,但我的代码只解析每个部分的第一个标记Php 如何使用simplexml解析xml?,php,simplexml,Php,Simplexml,我试图解析以下xml,但我的代码只解析每个部分的第一个标记 $xml = simplexml_load_string($response); foreach ($xml->person as $p) { $p = $p->attributes()->name; echo " ".$p. " "; } 输出是Joe Ray Alex,但我需要它来显示列表中每个人的姓名,所以应该是Joe Jack Ray John Edward Ale
$xml = simplexml_load_string($response);
foreach ($xml->person as $p) {
$p = $p->attributes()->name;
echo " ".$p. " ";
}
输出是Joe Ray Alex,但我需要它来显示列表中每个人的姓名,所以应该是Joe Jack Ray John Edward Alex
<?xml version="1.0" encoding="utf-8"?>
<people>
<person name="Joe">
<person name="Jack">
</person>
</person>
<person name="Ray">
<person name="John">
<person name="Edward">
</person>
</person>
<person name="Alex">
</person>
</people>
除了更改xml,还有其他选择吗?
因为我从web服务接收xml作为响应。为什么不更正xml i、 e
function printNames($simpleXMLElement) {
// Print the name attribute of each top level element
foreach ($simpleXMLElement as $element) {
// Print this elements name.
$p = $simpleXMLElement->attributes()->name;
echo " ".$p." ";
// Send the inner elements to get their names printed
foreach ($simpleXMLElement->children() as $child) {
printNames($child);
}
}
}
$xml = simplexml_load_string($response);
printNames($xml);
考虑到奇怪的XML结构,您要么必须查找并递归到找到的任何
person
元素中,要么需要生成所有person
元素的平面列表
下面是一种xpath方法:
$people = $xml->xpath('descendant::person');
foreach ($people as $person) {
echo $person['name'], "\n";
}
您的xml无效。另外,您确定这是您应该使用的结构吗?嵌套(没有任何上下文)似乎不寻常。您至少缺少一个结束标记。感谢您的回答,但它没有显示任何内容,输出为空
$people = $xml->xpath('descendant::person');
foreach ($people as $person) {
echo $person['name'], "\n";
}