Как я могу удалить текст узла, не удаляя дочерние узлы? - PullRequest
0 голосов
/ 15 октября 2010

Я работаю над созданием документов XML из значений в базе данных. Изначально программа экспортирует этот XML:

<customDataElementlanguage>English</customDataElementlanguage>

Я создал этот PHP для изменения дерева XML:

    if ($Element->nodeValue = "EN") { $Element->nodeValue = "English"; }

    $doc2 = $Element->ownerDocument;
    $titleElement = $doc2->createElement('title','language');
    $valueElement = $doc2->createElement('value',$Element->nodeValue);
    $Element->appendChild($titleElement);
    $Element->appendChild($valueElement);
    //$Element->nodeValue="";

в это:

<customDataElementlanguage>
English
<title>language</title>
<value>English</value>
</customDataElementlanguage>

Моя проблема в том, что я не могу найти способ удалить «английский» текст из узла, не стирая дочерние узлы title и value внутри. Вот что происходит, когда я заканчиваю свой код PHP с $Element->nodeValue="";

Я также хотел бы изменить имя узла customDataElemementlanguage на customDataElement, но я могу работать над этим позже, я полагаю:)

1 Ответ

1 голос
/ 15 октября 2010

Что ж, проще всего было бы сохранить nodeValue во временной переменной и сбросить nodeValue до создания других узлов.

$lang = $Element->nodeValue;
$Element->nodeValue = "";
$doc2 = $Element->ownerDocument;
$titleElement = $doc2->createElement('title','language');
$valueElement = $doc2->createElement('value', $lang);
$Element->appendChild($titleElement);
$Element->appendChild($valueElement);

Но вы также должныбыть в состоянии удалить узел DOMText через

$Element->removeChild($Element->childNodes->item(0));

в конце.

...