如何在元素标记之间创建包含文本的元素

时间:2013-11-19 11:14:28

标签: php xml dom

我已经完成了这个功能:

protected function _addElement($xmlDocument, $elementName, $parentElement){
    $element = $xmlDocument->createElement($elementName);
    return $parentElement->appendChild($element);
}

我称之为,即以这种方式:

$Street = $this->_addElement($xmlDocument, 'Steet', $xmlDocument);
$House = $this->_addElement($xmlDocument, 'House', $Street);

在创建的XML文档中,我将看起来像这样:

<Street>
   <House //maybe some attributes />
</Street>

因此,createElement($elementName)函数来自DOM API,我调用DOM对象$xmlDocument,它将创建一个封闭的节点。我需要的是使用一个函数,我将得到以下结果:

<Street>
   <Yard> the dog pooped all over the backyard </Yard>
</Steet>

我在DOM API中查找了涉及文本等的内容。我偶然发现了createTextNode($content)但是当我阅读文档时,这有点不同,或者我可能没有正确理解。

1 个答案:

答案 0 :(得分:0)

由于你正在使用DOMDocument::createElement,你会从方法定义中注意到它有第二个非强制性参数:

public DOMElement DOMDocument::createElement ( string $name [, string $value ] )

只需将您的代码更新为:

protected function _addElement($xmlDocument, $elementName, $elementValue, $parentElement) {
    $element = $xmlDocument->createElement($elementName, $elementValue);
    return $parentElement->appendChild($element);
}

$Street = $this->_addElement($xmlDocument, 'Steet', 'My street', $xmlDocument);
$House  = $this->_addElement($xmlDocument, 'House', 'My house', $Street);

这样您就可以添加具有所需值的元素。请注意,如果您要为新创建的元素添加属性,则必须先使用$element变量appendChild上的DOMDocument::createAttribute函数,然后才能调用{{1}}。