【问题标题】:Error while XML validation against the XSD针对 XSD 进行 XML 验证时出错
【发布时间】:2012-11-09 21:30:05
【问题描述】:

我在java中编写了以下代码进行验证,但它总是返回true。即使我修改 XML 并使其与 XSD 不兼容,它仍然返回 true。请看一下。

public static boolean isValidXML(String filePath,String xsdFile){
    boolean bValue = true;
    SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    try {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilderFactory.setNamespaceAware(true);
        DocumentBuilder parser = documentBuilderFactory.newDocumentBuilder();
        Document document = parser.parse(new File(filePath));

        Schema schema = schemaFactory.newSchema(new File(xsdFile));
        Validator validator = schema.newValidator();

        final List<SAXParseException> exceptions = new LinkedList<SAXParseException>();
        validator.setErrorHandler(new ErrorHandler()
        {
          public void warning(SAXParseException exception) throws SAXException
          {
            exceptions.add(exception);
          }

          public void fatalError(SAXParseException exception) throws SAXException
          {
            exceptions.add(exception);
          }

          public void error(SAXParseException exception) throws SAXException
          {
            exceptions.add(exception);
          }
        });
        validator.validate(new DOMSource(document));
    } catch (SAXException e) {
        bValue = false;
        logger.error("Error while Validating the XML."+e);
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return bValue;
}

【问题讨论】:

    标签: java xml xsd


    【解决方案1】:

    在您的ErrorHandler 接口实现中,尝试以下操作:

    而不是

    exceptions.add(exception);
    

    执行以下操作

    throw exception;
    

    您的实现可能会消耗验证异常。您还可以检查exceptions 并根据其内容返回。你为什么要填写一个以后从不使用的列表?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2013-10-30
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多