首頁 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板