gpt4 book ai didi

php - 如何使用对象作为 PHP 的 createElement 的参数

转载 作者:行者123 更新时间:2023-12-04 06:04:31 26 4
gpt4 key购买 nike

我正在使用一个变量来创建一个元素。但我收到此错误:

Warning: DOMDocument::createElement() expects parameter 1 to be string, object given


// 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>

最佳答案

您不能传递对象,必须使用 textContentnodeValue特性:

$element = $xml->createElement(trim($a->textContent), 'anothervalue');

您可能还想先将其从非法字符中剥离:
$nodeName = preg_replace('/[^a-z0-9_-]/i', '', $a->textContent);
$element = $xml->createElement($nodeName, 'anothervalue');

关于php - 如何使用对象作为 PHP 的 createElement 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8522929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com