Cách xác thực XML với XSD trong Java đơn giản
2 phút đọc18/07/2025
Reading Time: 2 minutesJava XML Validation API có thể được sử dụng để kiểm tra tính hợp lệ của XML so với XSD trong chương trình Java. Lớp javax.xml.validation.Validator được dùng trong chương trình này để kiểm tra XML với XSD trong Java.

Xác thực XML với XSD
Dưới đây là các tệp XSD và XML mẫu được sử dụng: Employee.xsd
Lưu ý rằng XSD trên có chứa hai phần tử gốc và cả không gian tên (namespace), tôi đã tạo hai tệp XML mẫu từ XSD này bằng công cụ Eclipse. EmployeeRequest.xml
5
EmployeeResponse.xml
1
Developer
Pankaj Kumar
Dưới đây là một tệp XML khác không tuân theo cấu trúc của Employee.xsd. employee.xml
Pankaj
29
Java Developer
Male
Đây là chương trình được sử dụng để kiểm tra cả ba tệp XML so với XSD. Phương thức validateXMLSchema nhận tệp XSD và XML làm tham số và trả về true nếu xác nhận thành công, ngược lại trả về false. XMLValidation.java
package com.journaldev.xml;
import java.io.File;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
public class XMLValidation {
public static void main(String[] args) {
System.out.println("EmployeeRequest.xml validates against Employee.xsd? "+validateXMLSchema("Employee.xsd", "EmployeeRequest.xml"));
System.out.println("EmployeeResponse.xml validates against Employee.xsd? "+validateXMLSchema("Employee.xsd", "EmployeeResponse.xml"));
System.out.println("employee.xml validates against Employee.xsd? "+validateXMLSchema("Employee.xsd", "employee.xml"));
}
public static boolean validateXMLSchema(String xsdPath, String xmlPath){
try {
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File(xsdPath));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File(xmlPath)));
} catch (IOException | SAXException e) {
System.out.println("Exception: "+e.getMessage());
return false;
}
return true;
}
}
Kết quả đầu ra của chương trình trên là:
EmployeeRequest.xml validates against Employee.xsd? true
EmployeeResponse.xml validates against Employee.xsd? true
Exception: cvc-elt.1: Cannot find the declaration of element 'Employee'.
employee.xml validates against Employee.xsd? false
Lợi ích của việc sử dụng Java XML Validation API là chúng ta không cần phải tự phân tích (parse) nội dung tệp XML, và cũng không cần dùng đến bất kì APIs của bên thứ ba nào.
Về tác giả

Bao TranWeb Developer
I’m passionate about web development and sharing my insights through articles, with over 8 years of experience. I hope these sharings inspire you and help build a strong web development community.
@#@
Tôi đam mê phát triển web và chia sẻ những hiểu biết của mình thông qua các bài viết, với hơn 8 năm kinh nghiệm. Tôi hy vọng những chia sẻ này sẽ truyền cảm hứng cho các bạn và giúp xây dựng một cộng đồng phát triển web mạnh mẽ.
Cập nhật thông tin mới nhấtNhận các thông tin mới nhất về mối đe dọa, báo cáo an ninh mạng từ CyStack về hòm thư điện tử của bạn
{"success":true,"head":"<title>Cách xác thực XML với XSD trong Java đơn giản - CyStack Tutorial</title>\n<meta name=\"description\" content=\"Tìm hiểu cách xác thực XML với XSD trong Java một cách dễ dàng, kèm ví dụ và hướng dẫn chi tiết từng bước. Phù hợp cho cả người mới bắt đầu và lập trình viên chuyên nghiệp.\"/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-video-preview:-1, max-image-preview:large\"/>\n<link rel=\"canonical\" href=\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/\" />\n<meta property=\"og:locale\" content=\"en_US\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:title\" content=\"Cách xác thực XML với XSD trong Java đơn giản - CyStack Tutorial\" />\n<meta property=\"og:description\" content=\"Tìm hiểu cách xác thực XML với XSD trong Java một cách dễ dàng, kèm ví dụ và hướng dẫn chi tiết từng bước. Phù hợp cho cả người mới bắt đầu và lập trình viên chuyên nghiệp.\" />\n<meta property=\"og:url\" content=\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/\" />\n<meta property=\"og:site_name\" content=\"CyStack Tutorial\" />\n<meta property=\"article:tag\" content=\"vi\" />\n<meta property=\"article:section\" content=\"Java\" />\n<meta property=\"og:image\" content=\"https://s2.cystack.net/tutorial/18145901/xac-thuc-xml-voi-xsd.jpg\" />\n<meta property=\"og:image:secure_url\" content=\"https://s2.cystack.net/tutorial/18145901/xac-thuc-xml-voi-xsd.jpg\" />\n<meta property=\"og:image:width\" content=\"1200\" />\n<meta property=\"og:image:height\" content=\"630\" />\n<meta property=\"og:image:alt\" content=\"xác thực XML với XSD\" />\n<meta property=\"og:image:type\" content=\"image/jpeg\" />\n<meta property=\"article:published_time\" content=\"2025-07-18T14:59:26+07:00\" />\n<meta name=\"twitter:card\" content=\"summary_large_image\" />\n<meta name=\"twitter:title\" content=\"Cách xác thực XML với XSD trong Java đơn giản - CyStack Tutorial\" />\n<meta name=\"twitter:description\" content=\"Tìm hiểu cách xác thực XML với XSD trong Java một cách dễ dàng, kèm ví dụ và hướng dẫn chi tiết từng bước. Phù hợp cho cả người mới bắt đầu và lập trình viên chuyên nghiệp.\" />\n<meta name=\"twitter:image\" content=\"https://s2.cystack.net/tutorial/18145901/xac-thuc-xml-voi-xsd.jpg\" />\n<meta name=\"twitter:label1\" content=\"Written by\" />\n<meta name=\"twitter:data1\" content=\"Bao Tran\" />\n<meta name=\"twitter:label2\" content=\"Time to read\" />\n<meta name=\"twitter:data2\" content=\"3 minutes\" />\n<script type=\"application/ld+json\" class=\"rank-math-schema\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https://blog.cystack.org/tutorial/#person\",\"name\":\"CyStack Tutorial\"},{\"@type\":\"WebSite\",\"@id\":\"https://blog.cystack.org/tutorial/#website\",\"url\":\"https://blog.cystack.org/tutorial\",\"name\":\"CyStack Tutorial\",\"publisher\":{\"@id\":\"https://blog.cystack.org/tutorial/#person\"},\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https://s2.cystack.net/tutorial/18145901/xac-thuc-xml-voi-xsd.jpg\",\"url\":\"https://s2.cystack.net/tutorial/18145901/xac-thuc-xml-voi-xsd.jpg\",\"width\":\"1200\",\"height\":\"630\",\"caption\":\"x\\u00e1c th\\u1ef1c XML v\\u1edbi XSD\",\"inLanguage\":\"en-US\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":\"1\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":\"2\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial/category/java/\",\"name\":\"Java\"}},{\"@type\":\"ListItem\",\"position\":\"3\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/\",\"name\":\"C\\u00e1ch x\\u00e1c th\\u1ef1c XML v\\u1edbi XSD trong Java \\u0111\\u01a1n gi\\u1ea3n\"}}]},{\"@type\":\"WebPage\",\"@id\":\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/#webpage\",\"url\":\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/\",\"name\":\"C\\u00e1ch x\\u00e1c th\\u1ef1c XML v\\u1edbi XSD trong Java \\u0111\\u01a1n gi\\u1ea3n - CyStack Tutorial\",\"datePublished\":\"2025-07-18T14:59:26+07:00\",\"dateModified\":\"2025-07-18T14:59:26+07:00\",\"isPartOf\":{\"@id\":\"https://blog.cystack.org/tutorial/#website\"},\"primaryImageOfPage\":{\"@id\":\"https://s2.cystack.net/tutorial/18145901/xac-thuc-xml-voi-xsd.jpg\"},\"inLanguage\":\"en-US\",\"breadcrumb\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/#breadcrumb\"}},{\"@type\":\"Person\",\"@id\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"name\":\"Bao Tran\",\"url\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https://secure.gravatar.com/avatar/0cdd33c02ec4a531fcf557b9c1ccc276df0c69031b2382c959bcf335248e840c?s=96&d=mm&r=g\",\"url\":\"https://secure.gravatar.com/avatar/0cdd33c02ec4a531fcf557b9c1ccc276df0c69031b2382c959bcf335248e840c?s=96&d=mm&r=g\",\"caption\":\"Bao Tran\",\"inLanguage\":\"en-US\"}},{\"@type\":\"BlogPosting\",\"headline\":\"C\\u00e1ch x\\u00e1c th\\u1ef1c XML v\\u1edbi XSD trong Java \\u0111\\u01a1n gi\\u1ea3n - CyStack Tutorial\",\"keywords\":\"x\\u00e1c th\\u1ef1c XML v\\u1edbi XSD,XML,XML Validation\",\"datePublished\":\"2025-07-18T14:59:26+07:00\",\"dateModified\":\"2025-07-18T14:59:26+07:00\",\"articleSection\":\"Java\",\"author\":{\"@id\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"name\":\"Bao Tran\"},\"publisher\":{\"@id\":\"https://blog.cystack.org/tutorial/#person\"},\"description\":\"T\\u00ecm hi\\u1ec3u c\\u00e1ch x\\u00e1c th\\u1ef1c XML v\\u1edbi XSD trong Java m\\u1ed9t c\\u00e1ch d\\u1ec5 d\\u00e0ng, k\\u00e8m v\\u00ed d\\u1ee5 v\\u00e0 h\\u01b0\\u1edbng d\\u1eabn chi ti\\u1ebft t\\u1eebng b\\u01b0\\u1edbc. Ph\\u00f9 h\\u1ee3p cho c\\u1ea3 ng\\u01b0\\u1eddi m\\u1edbi b\\u1eaft \\u0111\\u1ea7u v\\u00e0 l\\u1eadp tr\\u00ecnh vi\\u00ean chuy\\u00ean nghi\\u1ec7p.\",\"name\":\"C\\u00e1ch x\\u00e1c th\\u1ef1c XML v\\u1edbi XSD trong Java \\u0111\\u01a1n gi\\u1ea3n - CyStack Tutorial\",\"@id\":\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/#richSnippet\",\"isPartOf\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/#webpage\"},\"image\":{\"@id\":\"https://s2.cystack.net/tutorial/18145901/xac-thuc-xml-voi-xsd.jpg\"},\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/07/18/xac-thuc-xml-voi-xsd/#webpage\"}}]}</script>\n"}