加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网 (https://www.0555zz.com/)- 数据标注、建站、AI硬件、智能营销、数据计算!
当前位置: 首页 > 教程 > 正文

XSD验证XML的步骤

发布时间:2024-04-28 02:10:02 所属栏目:教程 来源:DaWei
导读: 我们将使用基于Java的XSD验证器来针对students.xsd验证文件:students.xml。

文件:students.xml -

<?xml version = 1.0?>
<class>
<student rollno = 1010>
<firstnam
我们将使用基于Java的XSD验证器来针对students.xsd验证文件:students.xml。

文件:students.xml -

<?xml version = 1.0?>
<class>  
   <student rollno = 1010>
      <firstname>Dinkar</firstname>    
      <lastname>King</lastname>
      <nickname>Dinkar</nickname>
      <marks>85</marks>     
   </student>
   <student rollno = 1020>     
      <firstname>Vaneet</firstname>
      <lastname>Su</lastname>
      <nickname>Vaneet</nickname>
      <marks>95</marks>
   </student>
   <student rollno = 1030>    
      <firstname>Jasvir</firstname>
      <lastname>Lee</lastname>
      <nickname>Jasvir</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文件复制到一个工作目录位置,例如:D:\worksp\xsd,将students.xml 和students.xsd 这两个文件复制到相同的工作目录位置(D:\worksp\xsd)。
打开命令行控制台编译XSDValidator.java,确保在计算机上安装了JDK 1.5以及类路径。 有关如何使用JAVA的详细信息,请参阅JAVA教程。

D:\worksp\xsd>javac XSDValidator.java
执行XSDValidator,并将students.xsd和students.xml这两个文件名称作为参数传递。输出结果如下所示 :

D:\worksp\xsd>java XSDValidator students.xsd students.xml
students.xml is valid against students.xsd

(编辑:草根网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章