SimpleXML в PHP; Заменить узел текстовым узлом - PullRequest
2 голосов
/ 30 декабря 2010

Учитывая этот фрагмент XML / XHTML:

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

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

Я использовал метод XPath SimpleXML, чтобы округлить все узлы верхнего уровня в пространстве имен zuq. Поскольку элементы массива метода xpath() являются псевдо-ссылками на узлы дерева объектов SimpleXML, я подумал, что манипулирование будет простым. Однако я не могу понять, как заменить данный узел элемента на текстовый узел. Как я могу, например, заменить <zuq:data name="siteHeader" /> текстом My Site Header.

Я рассмотрел простое нацеливание на родительский узел и изменение его содержимого, поскольку это может работать с первым блоком (<h1>), но я не вижу такой работы в случае моего второго блока (<h2>).

Есть ли простой способ заменить данный узел элемента текстовым узлом через SimpleXML в PHP?

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Насколько я знаю, simplexml не имеет возможности удалять или заменять узлы.это больше для чтения, создания и неструктурных правок.вам придется использовать объект DOM XML для полной замены узлов.это как более сложная версия simplexml.читайте об этом здесь:

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

1 голос
/ 30 декабря 2010

Быстро просматривая документацию, я также не смог найти простой способ.Я хотел бы просто перебрать исходный документ XML и скопировать каждый элемент в новый документ XML, изменив их при необходимости.

...