如何在不删除子节点的情况下删除节点文本?

时间:2010-10-14 22:37:28

标签: php dom text element

我正在从数据库中的值创建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>

我的问题是,我似乎找不到从节点中删除“英语”文本的方法,而不会消除里面的子节点titlevalue。当我用$Element->nodeValue="";

结束我的PHP代码时会发生这种情况

我还想将customDataElemementlanguage节点的名称更改为customDataElement,但我可以稍后处理,我想:)

1 个答案:

答案 0 :(得分:1)

嗯,最简单的方法是将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));

最后。