首页 > Java > java教程 > 如何在 Java 中根据 XSD 验证 XML?

如何在 Java 中根据 XSD 验证 XML?

Susan Sarandon
发布: 2024-12-10 19:54:15
原创
585 人浏览过

How to Validate XML Against an XSD in Java?

根据 XSD 验证 XML:完整指南

根据 XSD(XML 架构定义)文件验证 XML 文档对于确保数据完整性和符合指定标准至关重要。本教程将深入研究 Java 运行时库的 XML 验证功能,并提供使用 javax.xml.validation.Validator 类的具体示例。

使用 javax.xml.validation API

Java 运行时库通过 javax.xml.validation API 提供强大的 XML 验证功能。 javax.xml.validation.Validator 类构成了此 API 的基石,使开发人员能够根据给定架构验证 XML 文档。

验证示例代码

以下代码片段演示了如何根据 XSD 验证 XML 文件schema:

import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
import java.net.URL;
import org.xml.sax.SAXException;
//import java.io.File; // if you use File
import java.io.IOException;

...

// Define the XSD schema URL
URL schemaFile = new URL("http://host:port/filename.xsd");

// Create a Source object for the XML file to be validated
Source xmlFile = new StreamSource(new File("web.xml"));

// Create a SchemaFactory instance
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

try {
  // Create a Schema object from the XSD schema
  Schema schema = schemaFactory.newSchema(schemaFile);

  // Create a Validator object from the Schema object
  Validator validator = schema.newValidator();

  // Validate the XML file against the schema
  validator.validate(xmlFile);

  // Print a success message if validation is successful
  System.out.println(xmlFile.getSystemId() + " is valid");
} catch (SAXException e) {
  // Print an error message if validation fails due to an error
  System.out.println(xmlFile.getSystemId() + " is NOT valid reason:" + e);
} catch (IOException e) {
  // Handle IOException if file is not found or cannot be read
}
登录后复制

注意事项

值得注意的是,如果目标不是创建 DOM 对象模型,则不建议使用 DOMParser 进行验证。这种方法可能会导致不必要的资源消耗,并且不是一种有效的验证方法。

以上是如何在 Java 中根据 XSD 验证 XML?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板