php - what - Carácter ilegal en el feed XML?
what is xml (2)
Creé un complemento de Wordpress / WooCommerce que crea un archivo XML a partir de nuestros productos.
Pero en algunas filas hay personajes ilegales.
error on line 15622 at column 22: Input is not proper UTF-8, indicate encoding ! Bytes: 0x03 0xC3 0xB6 0x73
¿Cómo puedo resolver esto, entonces el XML se analiza correctamente?
El código para generar es algo así como:
$dom = new DOMDocument(''1.0'', ''UTF-8'');
// create root element
$root = $dom->createElement("termeklista");
$dom->appendChild($root);
$dom->formatOutput=true;
luego un ciclo while con el llenado de los datos. El problema está en la etiqueta de descripción.
// DESCRIPTION
$description = $dom->createElement("leiras");
$producta->appendChild($description);
// create CDATA section
$cdata = $dom->createCDATASection("/n".$loop->post->post_excerpt."/n");
$description->appendChild($cdata);
He intentado con iconv, utf8_encode, función personalizada para reemplazar los caracteres incorrectos, pero no puedo entender cuál es el problema.
El extracto de la publicación del producto WooCommerce no tiene ningún carácter ilegal.
0x03
(también conocido como ^C
aka ETX
alias final de la transmisión ) no es un carácter permitido en XML :
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Por lo tanto, sus datos no son XML, y cualquier procesador XML conforme debe informar un error como el que recibió.
Debe reparar los datos eliminando los caracteres ilegales tratándolos como texto, no XML, de forma manual o automática antes de usarlo con cualquier biblioteca XML.
Asi que,
Pude resolver el problema con la función stripInvalidXML () en esta pregunta. Gracias por el autor. El XML ahora es válido.