【发布时间】:2012-01-21 07:35:46
【问题描述】:
我正在使用一个变量来创建一个元素。但是我收到了这个错误:
警告:DOMDocument::createElement() 期望参数 1 是字符串,给定对象
// load up your XML
$xml = new DOMDocument;
$xml->load('test.xml');
$parent_node = $xml->createElement('parent');
foreach ($xml->getElementsByTagName('product') as $product )
{
$append = array();
foreach($product->getElementsByTagName('name') as $name ) {
// Stick $name onto the array
$append[] = $name;
}
foreach ($append as $a) {
$parent_node->appendChild($xml->createElement($a, 'anothervalue'));
$product->appendChild($parent_node);
}
$product->removeChild($xml->getElementsByTagName('details')->item(0));
//$product->appendChild($element);
}
// final result:
$result = $xml->saveXML();
原始 XML 结构:
<products>
<product>
<name>text</name>
<name>text</name>
<name>text</name>
</product>
</products>
我正在尝试创建一个新元素,其值为自身的文本。我知道它必须是什么样子。为什么我不能使用对象来创建元素?
我试图获得的结果将如下所示:
<products>
<product>
<text>text</text>
<text>text</text>
<text>text</text>
</product>
</products>
【问题讨论】:
-
因为
createElement需要一个字符串而不是一个对象。你有什么特别的问题吗? -
是否可以使用现有元素的内部文本来创建新元素?
-
就像stackoverflow.com/questions/2087103/… 中解释的那样?或者只是“文本”(没有可能的子元素),例如当
<name>text<foo>bar</foo></name>出现时,结果应该是什么?还是永远只是“文本”? -
没有可能的子元素。所以我会为每个
元素 创建一个新元素