如何使用PHP SimpleXMLElement仅提取并打印节点值?
如何从SimpleXMLElement中获取并打印纯节点值
你当前的问题在于使用print_r()输出SimpleXMLElement对象,导致输出了完整的对象结构而非纯文本值,同时代码中存在语法错误。以下是解决方法:
核心原理
SimpleXMLElement对象在被当作字符串使用时,会自动返回节点的文本值,不需要额外复杂操作。
修正后的代码示例
1. 先修正语法错误
你的遍历代码中有多余的闭合方括号:$xml->ReturnData->FromForm->DataGrp]-,需要去掉这个多余的]。
2. 正确遍历并输出纯文本值
<?php // 加载XML数据(沿用你已有的代码) $url = 'site.com'; $result = file_get_contents($url, false); if ($result === false) { /* Handle error */ } $xmlObject = simplexml_load_string($result); // 遍历所有DataGrpPerson节点 foreach ($xmlObject->ReturnData->FromForm->DataGrp->DataGrpPerson as $person) { // 强制转换为字符串获取纯节点值 $name = (string)$person->PersonNm; $title = (string)$person->TitleTxt; echo "$name, $title<br>"; } ?>
关键说明
- 避免使用
print_r():该函数用于打印变量的结构,并非输出纯文本值。 - 强制类型转换:通过
(string)将SimpleXMLElement对象转换为字符串,直接提取节点文本。 - 遍历整个数组:
DataGrpPerson是一个数组,直接遍历即可获取所有人员数据,无需手动指定索引[0]。
快速查看单个节点值的技巧
如果只需查看单个节点的纯值,可直接输出:
// 输出第一个人员的姓名 echo (string)$xmlObject->ReturnData->FromForm->DataGrp->DataGrpPerson[0]->PersonNm;
内容的提问来源于stack exchange,提问作者Mary Anne Welch
相关产品推荐
相关产品推荐

