Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
误导性的Java XML验证_Java_Xml_Validation_Xsd_Xml Validation - Fatal编程技术网

误导性的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()

我正在根据XSD验证XML。但我的java验证错误消息与XMLSpy的验证错误消息不同。这里XMLSpy是正确的,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复杂类型.2.4.a:发现以元素“”开头的无效内容

但他说:

元素下的此位置不允许使用元素


您得到的错误消息取决于您使用的验证器。两者都报告了相同的错误。如果您想要一个具有更好错误消息的JavaXSD验证器,请尝试一下Saxon:您可能更喜欢它。但错误报告是一门不精确的艺术:在设计错误消息时,实现者使用的是有限的信息(a)用户的意图,以及(b)用户对技术的了解程度。

错误消息id的内容取决于所使用的解析器实现。您的问题是什么?如果答案是“我该如何解决这个问题?”,答案是你有点SOL@Pangea还有其他解决方法吗?@HimanshuYadav不确定XmlSpy是否允许您选择解析器实现。如果确实如此,则将其更改为使用与JDK相同的实现。@Pangea XMLSpy不是我的问题。如果我将原始xml提交到外部系统,它会抛出错误,但当我按照XMLSpy建议重新排序xml时,它就可以正常工作了。有没有做同样事情的免费软件库?