significa - ¿Un archivo XML válido requiere una declaración XML?
xml valido y bien formado (3)
En XML 1.0, la Declaración XML es opcional . Consulte la sección 2.8 de la Recomendación XML 1.0 , donde dice que "debería" utilizarse, lo que significa que es recomendable, pero no obligatorio. En XML 1.1, sin embargo, la declaración es obligatoria . Consulte la sección 2.8 de la Recomendación XML 1.1 , donde dice "DEBE" ser utilizado. Incluso continúa afirmando que si la declaración está ausente, eso automáticamente implica que el documento es un documento XML 1.0.
Tenga en cuenta que en una Declaración XML, la encoding
y la standalone
son ambas opcionales. Solo la version
es obligatoria. Además, estos no son atributos, por lo tanto, si están presentes, deben estar en ese orden: version
, seguidos de cualquier encoding
, seguidos de cualquier version
standalone
.
<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" standalone="yes"?>
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
Si no especifica la codificación de esta manera, los analizadores XML intentan adivinar qué codificación se está utilizando. La Recomendación XML 1.0 describe una forma posible de codificación de caracteres que se puede detectar automáticamente . En la práctica, esto no es un gran problema si la entrada está codificada como UTF-8, UTF-16 o US-ASCII. La autodetección no funciona cuando encuentra codificaciones de 8 bits que usan caracteres fuera del rango US-ASCII (por ejemplo, ISO 8859-1). Evite crearlas si puede.
La standalone
indica si el documento XML puede procesarse correctamente sin la DTD o no. La gente rara vez lo usa. En estos días, es malo diseñar un formato XML que le falte información sin su DTD.
Actualizar:
Un error de "error de prólogo / codificación utf-8 no válida" indica que los datos reales que el analizador encontró dentro del archivo no coincidían con la codificación que dice la declaración XML. O en algunos casos, los datos dentro del archivo no coincidían con la codificación detectada automáticamente.
Como su archivo contiene una marca de orden de bytes (BOM), debe estar en codificación UTF-16. Sospecho que su declaración dice <?xml version="1.0" encoding="UTF-8"?>
Que obviamente es incorrecta cuando el archivo ha sido cambiado a UTF-16 por NotePad. La solución simple es eliminar la encoding
y simplemente decir <?xml version="1.0"?>
. También podría editarlo para decir encoding="UTF-16"
pero eso sería incorrecto para el archivo original (que no estaba en UTF-16) o si el archivo de alguna manera se cambia a UTF-8 u otra codificación.
No se moleste en intentar eliminar la lista de materiales: esa no es la causa del problema. ¡Usar NotePad o WordPad para editar XML es el verdadero problema!
Estoy analizando un archivo XML usando Sax Parser of Xerces.
¿Es obligatoria la declaración XML <?xml version="1.0" encoding="UTF-8"?>
Xml <?xml version="1.0" encoding="UTF-8"?>
?
La declaración Xml es opcional, por lo que tu xml está bien formado sin él. Pero se recomienda usarlo para que los analizadores no hagan suposiciones erróneas, específicamente sobre la codificación utilizada.
Solo es necesario si no está utilizando los valores predeterminados para la version
y la encoding
(que se encuentra en ese ejemplo).