如何创建一个在元素标记之间有文本的元素


How to create an element with text in between the element tags

我做了这个函数:

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),但这有点不同,或者可能是我在阅读文档时没有正确理解。

由于您使用的是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);

这样,您就可以添加具有所需值的元素。请记住,如果要向新创建的元素添加属性,则在调用appendChild之前,必须对$element变量使用DOMDocument::createAttribute函数。