开发者

Some Huge Basic Thing Wrong -- "Cannot Find Element X"

开发者 https://www.devze.com 2023-02-14 11:48 出处:网络
My xml <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> <credits> </credits> My schema <?xml version=\"1.0\" encoding=\"UTF-8\" ?>

My xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<credits> 
</credits>

My schema

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="credits">

  &开发者_开发知识库lt;/xsd:element>

</xsd:schema>

And it says "SaxParseException: cannot find declaration of element 'credits'"

What?! :P How is that possible? Absolutely confounded here. Been googling for hours nothing yet.

Thanks SO!

        SchemaFactory schemaFactory = SchemaFactory.newInstance( XMLConstants.W3C_XML_SCHEMA_NS_URI );
        Schema schemaXSD = schemaFactory.newSchema( new File ( "test.xsd" ) );

        Validator v = schemaXSD.newValidator();
       DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  Document document = parser.parse( new File( "test.xml" ) );
        document.toString();
        DOMSource testSource = new DOMSource(document);
        v.validate( testSource );

EDIT: Found the solution. Google finally yielded something. :P I had to add

factory.setNamespaceAware(true);

to my DocumentBuilderFactory object. :D


means that the test.xml doesn't have a credits element. If this is acceptable, set minOccurs="0"

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号