XSD - 验证
我们将使用基于 Java 的 XSD 验证器根据 students.xsd 验证 students.xml。
students.xml
<?xml version = "1.0"?> <class> <student rollno = "393"> <firstname>Dinkar</firstname> <lastname>Kad</lastname> <nickname>Dinkar</nickname> <marks>85</marks> </student> <student rollno = "493"> <firstname>Vaneet</firstname> <lastname>Gupta</lastname> <nickname>Vinni</nickname> <marks>95</marks> </student> <student rollno = "593"> <firstname>Jasvir</firstname> <lastname>Singh</lastname> <nickname>Jazz</nickname> <marks>90</marks> </student> </class>
students.xsd
<?xml version = "1.0"?> <xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"> <xs:element name = 'class'> <xs:complexType> <xs:sequence> <xs:element name = 'student' type = 'StudentType' minOccurs = '0' maxOccurs = 'unbounded' /> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name = "StudentType"> <xs:sequence> <xs:element name = "firstname" type = "xs:string"/> <xs:element name = "lastname" type = "xs:string"/> <xs:element name = "nickname" type = "xs:string"/> <xs:element name = "marks" type = "xs:positiveInteger"/> </xs:sequence> <xs:attribute name = 'rollno' type = 'xs:positiveInteger'/> </xs:complexType> </xs:schema>
XSDValidator.java
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 XSDValidator { public static void main(String[] args) { if(args.length !=2){ System.out.println("Usage : XSDValidator <file-name.xsd> <file-name.xml>" ); } else { boolean isValid = validateXMLSchema(args[0],args[1]); if(isValid){ System.out.println(args[1] + " is valid against " + args[0]); } else { System.out.println(args[1] + " is not valid against " + args[0]); } } } 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 e){ System.out.println("Exception: "+e.getMessage()); return false; }catch(SAXException e1){ System.out.println("SAX Exception: "+e1.getMessage()); return false; } return true; } }
根据 XSD 验证 XML 的步骤
将 XSDValidator.java 文件复制到任意位置,例如 E: > java
将 students.xml 复制到相同的位置 E: > java
将 students.xsd 复制到相同的位置 E: > java
使用控制台编译 XSDValidator.java。确保您的计算机上安装了 1.5 及更高版本的 JDK 并且配置了类路径。有关如何使用 JAVA 的详细信息,请参阅 JAVA 教程
E:\java\javac XSDValidator.java
使用 students.xsd 和 students.xml 作为参数来执行 XSDValidator。
E:\java\java XSDValidator students.xsd students.xml
验证输出
您将看到以下结果 −
students.xml is valid against students.xsd
广告