如何使用PHP SimpleXMLElement设置XML元素的文本内容?
如何修改PHP SimpleXMLElement的元素文本内容
当然可以实现。你遇到的问题核心在于两点:一是xpath()返回的是SimpleXMLElement对象数组,并非单个元素;二是直接给变量赋值只是覆盖了变量引用,并未修改原XML对象的内容。
正确修改步骤
- 获取目标元素对象:从
xpath()返回的数组中取出具体的元素(比如第一个匹配项) - 直接给元素对象赋值:SimpleXMLElement支持直接赋值来修改元素文本
完整示例代码
$xmlStr = '<root> <element>text</element> </root>'; // 初始化XML对象 $xml = new SimpleXMLElement($xmlStr); // 通过xpath获取元素并取第一个匹配项 $elements = $xml->xpath('/root/element'); if (!empty($elements)) { $element = $elements[0]; // 直接修改元素文本 $element = 'new text'; } // 输出修改后的XML echo $xml->asXML();
更简洁的写法
如果确定<element>节点唯一,也可以直接通过对象属性访问修改:
$xml->element = 'new text';
原赋值无效的原因
你之前写的$element = 'new text';只是把变量$element从SimpleXMLElement对象重新赋值为字符串,并没有对原XML对象里的元素做任何修改。只有当$element指向SimpleXMLElement对象时,赋值操作才会作用于XML元素的文本内容。
内容的提问来源于stack exchange,提问作者ygoe
相关产品推荐
相关产品推荐

