You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用simplexml获取XML文件中指定标签的子节点数据

错误原因

  • XML文件存在语法错误,末尾的</Client闭合标签缺失右尖括号>,且Email节点内混入了多余的冗余文本enter code here,会导致XML解析失败。
  • PHP代码调用的函数和方法名错误:
    1. 读取XML文件的正确函数是simplexml_load_file(),你写的simple_xml_load是不存在的错误函数名
    2. SimpleXMLElement类没有getChildren()方法,获取子节点需要调用children()方法

修正步骤

1. 修正XML文件内容

修正后的合法XML如下:

<Client>
  <Name>
    <First>John</First>
    <Last>Doe</Last>
  </Name>
  <Userid>2</Userid>
  <Email>john.doe@gmail.com</Email>
</Client>

2. 替换为正确的PHP代码

如果需要直接获取Name节点下的子节点内容,可直接通过属性调用,写法更简单:

// 加载XML文件
$xml = simplexml_load_file('client.xml');

// 直接读取Name节点下的子节点内容
echo "First name: " . $xml->Name->First . "\n";
echo "Last name: " . $xml->Name->Last . "\n";

// 如果需要遍历Name下所有子节点,使用children()方法
foreach ($xml->Name->children() as $nodeName => $nodeValue) {
    echo $nodeName . ": " . $nodeValue . "\n";
}

3. 可选:添加错误排查代码

如果仍然没有输出,可添加以下代码定位解析错误:

libxml_use_internal_errors(true);
$xml = simplexml_load_file('client.xml');
if (!$xml) {
    echo "XML解析错误:\n";
    foreach (libxml_get_errors() as $error) {
        echo "- 第" . $error->line . "行:" . $error->message;
    }
    libxml_clear_errors();
}

内容的提问来源于stack exchange,提问作者ambaram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 10:48:03