运行此代码时出现此错误:
致命错误:test.php中带有消息’无效字符错误’的未捕获异常’DOMException’:29堆栈跟踪:#0 test.php(29):DOMDocument-> createElement(‘1OhmStable’,’a’)#1 { main}在第29行的test.php中抛出
来自原始XML文件的节点确实包含无效字符,但是当我从节点中剥离无效字符时,应该创建节点.我需要在原始XML文档上进行哪种编码?我需要解码saveXML吗?
function __cleanData($c)
{
return preg_replace("/[^A-Za-z0-9]/", "",$c);
}
$xml = new DOMDocument('1.0', 'UTF-8');
$xml->load('test.xml');
$xml->formatOutput = true;
$append = array();
foreach ($xml->getElementsByTagName('product') as $product )
{
foreach($product->getElementsByTagName('name') as $name )
{
$append[] = $name;
}
foreach ($append as $a)
{
$nodeName = __cleanData($a->textContent);
$element = $xml->createElement(htmlentities($nodeName) , 'a');
}
$product->removeChild($xml->getElementsByTagName('details')->item(0));
$product->appendChild($element);
}
$result = $xml->saveXML();
$file = "data.xml";
file_put_contents($file,$result);
这就是原始XML的样子:
M100
1553725
1 Ohm Stable
600 x 1
新文档应该如下所示:
M100
1553725
<1 Ohm Stable>
1 Ohm Stable>