在PHP开发中,对XML文件的内容进行修改是常见的需求,通常可以通过SimpleXML和DOMDocument两种扩展实现,两种方法各有特点,适配不同的使用场景。

使用SimpleXML修改XML内容
SimpleXML扩展提供了非常简洁的语法,适合处理结构相对简单的XML文件,操作起来更加直观。首先需要将XML内容加载为SimpleXML对象,然后直接通过对象属性修改对应节点的值,最后保存修改后的内容即可。
修改现有节点值
假设我们有一个名为user.xml的文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>张三</name>
<age>25</age>
<email>test@ipipp.com</email>
</user>
现在需要修改用户的年龄和邮箱,对应的PHP代码如下:
<?php
// 加载XML文件
$xml = simplexml_load_file('user.xml');
if ($xml === false) {
die('加载XML文件失败');
}
// 修改节点值
$xml->age = 26;
$xml->email = 'new_test@ipipp.com';
// 保存修改后的内容到原文件
$xml->asXML('user.xml');
echo 'XML内容修改成功';
?>
新增和删除节点
SimpleXML也支持新增和删除节点,新增节点可以使用addChild方法,删除节点可以先将对象转为数组再操作,不过删除操作相对繁琐一些。以下是新增节点的示例:
<?php
$xml = simplexml_load_file('user.xml');
// 新增address节点
$xml->addChild('address', '北京市朝阳区');
// 保存修改
$xml->asXML('user.xml');
?>
使用DOMDocument修改XML内容
DOMDocument扩展提供了更完整的XML操作能力,支持更复杂的节点操作,比如修改属性、删除指定节点、操作命名空间等场景,适合处理结构复杂或者有特殊需求的XML文件。
修改节点和属性
同样使用上面的user.xml文件,使用DOMDocument修改节点值和属性的示例如下:
<?php
// 创建DOMDocument对象并加载XML
$dom = new DOMDocument();
$dom->load('user.xml');
// 获取name节点并修改内容
$nameNodes = $dom->getElementsByTagName('name');
if ($nameNodes->length > 0) {
$nameNodes->item(0)->nodeValue = '李四';
}
// 给user节点添加id属性
$userNode = $dom->getElementsByTagName('user')->item(0);
$userNode->setAttribute('id', '1001');
// 保存修改
$dom->save('user.xml');
echo 'DOM方式修改XML成功';
?>
删除指定节点
DOMDocument删除节点需要先找到父节点,再调用removeChild方法,示例如下:
<?php
$dom = new DOMDocument();
$dom->load('user.xml');
// 找到email节点
$emailNode = $dom->getElementsByTagName('email')->item(0);
// 找到email的父节点,删除email节点
if ($emailNode !== null) {
$emailNode->parentNode->removeChild($emailNode);
}
$dom->save('user.xml');
?>
两种方法的适用场景
如果是处理简单的XML结构,只需要修改少量节点值、新增简单节点,优先选择SimpleXML,代码更简洁易读;如果需要操作XML属性、删除指定节点、处理复杂的XML结构或者命名空间,优先选择DOMDocument,功能更完善。开发者可以根据实际需求选择合适的方案。
XMLPHPSimpleXMLDOMDocumentXML修改修改时间:2026-06-15 15:09:13