使用PHP SimpleXMLElement设置元素的文本内容

ldioqlga  于 2023-03-07  发布在  PHP
关注(0)|答案(2)|浏览(130)

PHP SimpleXMLElement可以访问XML,也可以通过隐式字符串转换提供元素的文本内容,但是我看不出有什么方法可以改变文本内容,这可能吗?
我有这样的XML:

<root>
    <element>text</element>
</root>

可以按如下方式访问元素中的文本:

$xml = new SimpleXMLElement($xmlStr);
$element = $xml->xpath('/root/element');
echo $element;

但我还需要设置文本,使XML看起来像这样:
一个二个一个一个
这显然行不通。但我甚至不知道该尝试什么。它没有文档记录,我在网上也找不到任何东西。一个让我搜索这么多简单用法的类不可能是"简单"的。
JavaScript的等效代码为:

element.textContent = "new text";
eqqqjvef

eqqqjvef1#

这应该可以达到目的:

$xml = new SimpleXMLElement("<root><element>text</element></root>");
   $element = $xml->xpath('/root/element');
   $element[0][0] = "new text";
   echo $xml->asXML();
ujv3wf0j

ujv3wf0j2#

SimpleXML是有限的。
PHP支持DOM和Xpath。与浏览器相比,Xpath实际上更容易使用。DOMXpath::evaluate()根据表达式返回节点列表或标量值。

$xml = '<root><element>text</element></root>';

$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMXpath();

// fetch and iterate nodes
foreach ($xpath->evaluate('(/root/element)[1]') as $element) {
    // modify node
    $element->textContent = "new text";
}

echo $document->saveXML();

相关问题