XML基础知识——使用schema校验XML文件合法性(四)

一、源代码如下

(1)、第一种方式

	/**
	 * 使用Schema验证XML的合法性
* * @param xmlDocument 要验证的XML文件 * @param xsdFilename Schema文件名 * @return 如果验证通过,则返回true,否则返回false。 */ @SuppressWarnings("unchecked") public static boolean validateXmlBySchema(Document xmlDocument, String xsdFilename) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); factory.setNamespaceAware(true); SAXParser parser = factory.newSAXParser(); parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema"); parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", "file:" + xsdFilename); SAXValidator validator = new SAXValidator(parser.getXMLReader()); // 错误处理器,存放验证过程中的错误信息 XMLErrorHandler errorHandler = new XMLErrorHandler(); validator.setErrorHandler(errorHandler); // 验证XML文件的合法性 validator.validate(xmlDocument); if (errorHandler.getErrors().hasContent()) { LogUtil.error("XML合法性验证失败,错误信息如下:"); List elements = errorHandler.getErrors().elements(); for (Element element : elements) { LogUtil.error("(line " + (Integer.parseInt(element.attributeValue("line")) + 1) + ") " + element.getText()); } /* StringWriter writer = new StringWriter(); XMLWriter xmlWriter = new XMLWriter(writer, OutputFormat.createPrettyPrint()); xmlWriter.write(errorHandler.getErrors()); logger.error(writer.toString()); writer.close(); xmlWriter.close(); */ return false; } else { LogUtil.debug("XML合法性验证成功"); return true; } } catch (ParserConfigurationException e) { UtilException pe = new UtilException("XML合法性验证出错:" + e.getMessage(), e); LogUtil.exception(pe); throw pe; } catch (SAXException e) { UtilException pe = new UtilException("XML合法性验证出错:" + e.getMessage(), e); LogUtil.exception(pe); throw pe; } }
(2)、第二种方式

	/**
	 * 使用Schema验证XML的合法性
* * @param xmlFile 要验证的XML文件 * @param xsdFilename Schema文件名 * @return 如果验证通过,则返回true,否则返回false。 */ public static boolean validateXmlBySchema(File xmlFile, String xsdFilename) { try { SAXReader reader = new SAXReader(); Document xmlDocument = reader.read(xmlFile); return validateXmlBySchema(xmlDocument, xsdFilename); } catch (DocumentException e) { UtilException pe = new UtilException("XML合法性验证出错:" + e.getMessage(), e); LogUtil.exception(pe); throw pe; } }

(3)、第三种方式

	/**
	 * 使用Schema验证XML的合法性
* * @param xmlString 要验证的XML文件 * @param xsdFilename Schema文件名 * @return 如果验证通过,则返回true,否则返回false。 */ public static boolean validateXmlBySchema(String xmlString, String xsdFilename) { try { SAXReader reader = new SAXReader(); Document xmlDocument = reader.read(new StringReader(xmlString)); return validateXmlBySchema(xmlDocument, xsdFilename); } catch (DocumentException e) { UtilException pe = new UtilException("XML合法性验证出错:" + e.getMessage(), e); LogUtil.exception(pe); throw pe; } }

你可能感兴趣的:(XML文档基础)