Chybové hlášky XML, XSD a JSON
Stejnou chybu v XML popisuje každý parser jinými slovy. Každá stránka tady řeší jednu příčinu: sdružuje hlášky z Javy, PHP a xmllint (libxml2), Pythonu, .NET a prohlížečů, ukazuje chybný a opravený dokument a opravu v kódu. Hlášky XML, XSD i JSON v tabulkách jsou ověřené skutečnými parsery na stejných ukázkách, u JSON v Node.js, prohlížečích, Pythonu, .NET a PHP.
XML a XSD podle příčiny
- Obsah před prologem
Content is not allowed in prolog.·Start tag expected, '<' not found·Data at the root level is invalid. - Více kořenových elementů
Extra content at the end of the document·junk after document element·There are multiple root elements. - Neukončená značka
Opening and ending tag mismatch·must be terminated by the matching end-tag·mismatched tag - Znak & a entity
EntityRef: expecting ';'·The entity name must immediately follow the '&' in the entity reference.·not well-formed (invalid token) - Špatné kódování
Invalid byte 1 of 1-byte UTF-8 sequence.·Input is not proper UTF-8, indicate encoding !·Invalid character in the given encoding. - Prázdný soubor, HTML, JSON
Premature end of file.·Root element is missing.·Document is empty - XSD: neočekávaný element
cvc-complex-type.2.4.a: Invalid content was found starting with element·This element is not expected. - XSD: chybějící element
cvc-complex-type.2.4.b: The content of element·Missing child element(s). - XML: neplatný znak
An invalid XML character (Unicode: 0x1) was found·PCDATA invalid Char value 1·hexadecimal value 0x00, is an invalid character. - XML: nedeklarovaný prefix
The prefix "p" for element "p:kniha" is not bound.·Namespace prefix p on kniha is not defined·'p' is an undeclared prefix. - XSD: chybějící povinný atribut
cvc-complex-type.4: Attribute 'id' must appear on element·is required but missing. - XSD: neplatná hodnota datového typu
cvc-datatype-valid.1.2.1·cvc-pattern-valid·cvc-enumeration-valid·is not a valid value of the atomic type - XSD: nesouhlasí jmenný prostor
cvc-elt.1.a: Cannot find the declaration of element·No matching global declaration available for the validation root.
JSON podle příčiny
- JSON: Unexpected token
Unexpected token '<', "<!DOCTYPE html>" is not valid JSON·Expected property name or '}' in JSON·Expecting value: line 1 column 1 (char 0) - JSON: koncová čárka
Expected double-quoted property name in JSON·Illegal trailing comma before end of object·Expecting property name enclosed in double quotes - JSON: neplatný escape
Bad escaped character in JSON·Invalid \escape·Bad Unicode escape in JSON - JSON: neplatné číslo
Unexpected number in JSON·Invalid leading zero before '1'.·Unexpected token 'N' - JSON: neočekávaný konec
Unexpected end of JSON input·Unterminated string in JSON·JSON.parse: unexpected end of data
Další chyby
- XPath nic nevrací: výchozí namespace Proč //entry v Atom feedu, sitemapě nebo faktuře vrací prázdný výsledek a jak zaregistrovat prefix v JavaScriptu, C#, Javě, Pythonu, PHP a PostgreSQL.
Jak číst chybovou hlášku
- Dobře formovaný, nebo validní? Hlášky o značkách, entitách a kódování
znamenají, že dokument vůbec není XML a parser skončil. Hlášky s
cvc-…, This element is not expected nebo Missing child element přicházejí až z validace proti schématu — dokument je v pořádku, jen neodpovídá XSD. - Číslo řádku ukazuje, kde si parser chyby všiml. U neuzavřené značky to bývá až konec nadřazeného elementu, skutečná příčina je výš.
- Řádek 1, sloupec 1 znamená problém hned na začátku: prázdný soubor, BOM, text před deklarací nebo odpověď, která není XML.
- Opravuj od první chyby. Další hlášky často jen následují z té první.
Obecné vysvětlení, jak parser čte dokument a proč se zastaví na první chybě, najdeš v kapitole Jak funguje XML. Vlastní dokument zkontroluješ ve validátoru XML, který ukáže přesné místo chyby a u častých chyb nabídne opravu.
Který parser používá tvůj program
- libxml2: PHP (DOMDocument, SimpleXML, XMLReader), xmllint, Python lxml, Ruby Nokogiri, validátor na XML.cz.
- Xerces (součást JDK): Java — DocumentBuilder, SAXParser, JAXB, Spring, Maven.
- expat: Python — xml.etree.ElementTree, minidom, xml.sax.
- System.Xml: .NET — XmlDocument, XDocument, XmlReader.
- Prohlížeče: DOMParser a zobrazení XML souboru; Chrome od verze 151 vlastní parser, Firefox parser odvozený z expat.