PHP中的SimpleXML;用文本节点替换节点

时间:2010-12-30 19:51:55

标签: php replace simplexml

鉴于此XML / XHTML片段:

<h1>
    <zuq:data name="siteHeader" />
</h1>

<h2>
    <zuq:data name="pageHeaderName" />
    <span>&mdash;</span>
    <zuq:data name="pageHeaderTitle" />
</h2>

我使用SimpleXML的XPath方法来舍入zuq命名空间中的所有顶级节点。由于xpath()方法的数组元素是对SimpleXML对象树节点的伪引用,我认为操作很容易。但是,我无法弄清楚如何用文本节点替换给定的元素节点。例如,我如何将<zuq:data name="siteHeader" />替换为文字My Site Header

我已经考虑过简单地定位父节点并修改它的内容,因为它可以与第一个块(<h1>)一起使用,但是我没有看到我的第二个块({{1 }})。

有没有一种简单的方法可以通过PHP中的<h2>用文本节点替换给定的元素节点?

2 个答案:

答案 0 :(得分:1)

快速查看文档我也找不到简单的方法。我会尝试迭代原始的xml doc并将每个元素复制到一个新的xml doc,并根据需要进行修改。

答案 1 :(得分:1)

据我所知,simplexml无法删除或替换节点。它更适用于阅读,创建和非结构相关的编辑。您将不得不使用DOM XML对象来完全替换节点。它有点像simplexml的更复杂版本。在这里阅读:

http://www.php.net/manual/en/book.domxml.php