我试图通过添加一些自定义标记来操纵xml。
我设法在其上添加了一个自定义元素和一个TextNode,但它在XML的最底部呈现。
如何将此自定义标记添加为另一个标记的子标记?我尝试使用以下代码:
$product_record = $xml->documentElement->getElementsByTagName('product_record');
然后
$text = $test->appendChild($product_record);
但它似乎没有起作用。
在这里我被卡住了: http://viper-7.com/CsRNHU
如何在product_record中呈现测试标记?
谢谢, Thales公司
答案 0 :(得分:0)
以完整示例为例,将新元素添加到文档itselt,而不是已获取的节点。
getElementsByTagName()方法返回节点列表,而不是单个节点,因此您需要使用循环或从列表中获取特定元素。
$xml = new DOMDocument();
$xml->load($url);
$products = $xml->documentElement->getElementsByTagName('product_record');
foreach ($products as $product) {
$test = $product
->appendChild($xml->createElement('test'))
->appendChild($xml->createTextNode("testing"));
}
echo $xml->saveXML();
DOMDocument :: create *()方法创建特定节点并返回它们。 appendChild()方法将其添加到父节点并返回添加的节点。
您的示例返回UTF-16编码的XML。如果要更改编码,请将其导入UTF-8 XML文档:
$utf8 = new DOMDocument('1.0', 'UTF-8');
$utf8->appendChild($utf8->importNode($xml->documentElement, TRUE));