org.xml.sax.SAXParseException: cvc-elt.1: Ne peut pas trouver la déclaration de l'élément "tns:root_element'
J'ai passé passé 2 heures sur ce. Je suis incapable de comprendre pourquoi cette erreur se produit. J'ai une simple xsd et xml code
fichier xml:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="root_element" type="string"/>
</schema>
fichier xsd:
<?xml version="1.0" encoding="UTF-8"?>
<root_element>"asd"</root_element>
Mon code java est:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
SchemaFactory s_factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
dbf.setSchema(s_factory.newSchema(new File(schemafile)));
dbf.setValidating(true);
dbf.setFeature("http://apache.org/xml/features/validation/schema", true);
DocumentBuilder db = dbf.newDocumentBuilder();
CommodityPropsErrorHandler cp_eh = new CommodityPropsErrorHandler();
db.setErrorHandler(cp_eh);
Document doc = db.parse(new File(props_file));
Tout commentaire serait utile. ce qui concerne
Qui ne peut pas être tout. Quelque part il y a une référence à un préfixe d'espace de noms
tns:
que vous n'avez pas posté.OriginalL'auteur jwookie | 2011-08-21
Vous devez vous connecter pour publier un commentaire.
Je pense que la question principale est:
Selon API Java,
DocumentBuilderFactory.setValidating
:Aussi, vous n'avez pas besoin:
Votre code de travail est probablement juste (mais je ne sais pas ce qui est dans
CommodityPropsErrorHandler
classe):Voici la deuxième, l'approche alternative avec les précédents
dbf.setValidating(true);
(qui est, à l'aide de ces deux propriétés de JAXP, mentionné dans l'API Java):OriginalL'auteur Grzegorz Szpetkowski
Cette ligne est pour faire de la validation de l'espace de noms courant. Sinon, il sera donner à l'Élément n'est pas présent dans la doc.
OriginalL'auteur Mukesh Vispute