误导性的Java XML验证
我正在根据XSD验证XML。但我的java验证错误消息与XMLSpy的验证错误消息不同。这里XMLSpy是正确的,java验证消息是误导性的。我使用以下代码验证XML:误导性的Java XML验证,java,xml,validation,xsd,xml-validation,Java,Xml,Validation,Xsd,Xml Validation,我正在根据XSD验证XML。但我的java验证错误消息与XMLSpy的验证错误消息不同。这里XMLSpy是正确的,java验证消息是误导性的。我使用以下代码验证XML: SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); factory.setNamespaceAware(true); SAXParser saxParser = factory.newSAXParser()
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
SAXParser saxParser = factory.newSAXParser();
saxParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
saxParser.setProperty(JAXP_SCHEMA_SOURCE,new File("TXLife2.26.00.xsd"));
MySAXHandler dh = new MySAXHandler();
saxParser.parse(new File("test.xml"), dh);
Java验证消息显示:
cvc复杂类型.2.4.a:发现以元素“”开头的无效内容
但他说:
元素下的此位置不允许使用元素
您得到的错误消息取决于您使用的验证器。两者都报告了相同的错误。如果您想要一个具有更好错误消息的JavaXSD验证器,请尝试一下Saxon:您可能更喜欢它。但错误报告是一门不精确的艺术:在设计错误消息时,实现者使用的是有限的信息(a)用户的意图,以及(b)用户对技术的了解程度。错误消息id的内容取决于所使用的解析器实现。您的问题是什么?如果答案是“我该如何解决这个问题?”,答案是你有点SOL@Pangea还有其他解决方法吗?@HimanshuYadav不确定XmlSpy是否允许您选择解析器实现。如果确实如此,则将其更改为使用与JDK相同的实现。@Pangea XMLSpy不是我的问题。如果我将原始xml提交到外部系统,它会抛出错误,但当我按照XMLSpy建议重新排序xml时,它就可以正常工作了。有没有做同样事情的免费软件库?