Tôi nhận được lỗi này khi chạy mã này: Fatal error: Uncaught exception 'DOMException' with message 'Invalid Character Error' in test.php:29 Stack trace: #0 test.php(29): DOMDocument->createElement('1OhmStable', 'a') #1 {main} thrown in test.php on line 29
PHP nhân vật không hợp lệ lỗi
Các nút mà từ tập tin XML gốc làm chứa các ký tự không hợp lệ, nhưng như tôi đang tước các nhân vật không hợp lệ khỏi nút, các nút sẽ được tạo. Tôi cần phải làm loại mã hóa nào trên tài liệu XML gốc? Tôi có cần giải mã saveXML không?
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);
Đây là những gì XML gốc trông giống như:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/v1/xsl/xml_pretty_printer.xsl" type="text/xsl"?>
<products>
<product>
<modelNumber>M100</modelNumber>
<itemId>1553725</itemId>
<details>
<detail>
<name>1 Ohm Stable</name>
<value>600 x 1</value>
</detail>
</details>
</product>
</products>
Các tài liệu mới được cho là giống như thế này:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/v1/xsl/xml_pretty_printer.xsl" type="text/xsl"?>
<products>
<product>
<modelNumber>M100</modelNumber>
<itemId>1553725</itemId>
<1 Ohm Stable>
</1 Ohm Stable>
</product>
</products>
bạn giống như đang nói chuyện với chính mình, XML ở đâu? – ajreal
@ajreal Chỉ cần đặt nó lên –
Tại sao bạn đăng phiên bản sạch? – ajreal