2012-04-09 64 views
-2

我正在根据XSD验证XML。但是我的java验证错误消息与XMLSpy的验证错误消息不同。这里XMLSpy是正确的,并且java验证信息是误导性的。我使用下面的代码来验证XML:误导性Java XML验证

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-复杂type.2.4.a:无效的含量被发现开始元素 '<元素>' 。

但XMLSpy的说:

元<元素>未在此位置之下元素< parent_element>

+2

错误消息ID的内容取决于正在使用的解析器实现。 – 2012-04-09 19:49:06

+1

你的问题是什么?如果答案是“我该如何解决这个问题?”,答案是你是一种SOL – ControlAltDel 2012-04-09 19:49:46

+0

@Pangea无论如何解决它? – 2012-04-10 11:35:02

回答

1

你得到该错误消息取决于您所使用的验证允许的。两者都报告相同的错误。如果您想要一个具有更好错误消息的Java XSD验证器,请尝试撒克逊:您可能更喜欢它。但是错误报告是一种不精确的艺术:在设计错误消息时,实现者正在处理关于(a)用户想要的内容和(b)用户对技术理解程度的有限信息。

+0

Saxon EE具有针对XSD验证XML的功能。有没有免费软件库可以做同样的事情? – 2012-04-10 11:34:28