根据DTD文件写XML文件,并验证有效性

时间:2022-01-21 11:52:07

dtd文件

根据DTD文件写XML文件,并验证有效性根据DTD文件写XML文件,并验证有效性
 1 <!ELEMENT *公民 (公民*)>
 2 <!ELEMENT 公民 (身份证号, 姓名+, 籍贯, 地址, 电话+)>
 3 <!ELEMENT 身份证号 (#PCDATA)>  
 4 <!ELEMENT 姓名 (#PCDATA)>  
 5 <!ELEMENT 籍贯 (#PCDATA)>  
 6 <!ELEMENT 地址 (#PCDATA)>  
 7 <!ELEMENT 电话 (#PCDATA)>  
 8 <!ATTLIST 公民 性别 (famale | male) "male">  
 9 <!ATTLIST 姓名 中英文 (中文 | 英文) "中文">  
10 <!ATTLIST 电话  
11     手机座机 (手机|座机) #REQUIRED
12     号码 CDATA #REQUIRED
13 >
View Code

xml文件

根据DTD文件写XML文件,并验证有效性根据DTD文件写XML文件,并验证有效性
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE *公民 SYSTEM "citizen.dtd">
 3 <*公民>
 4     <公民 性别="male">
 5         <身份证号>510722199505210755</身份证号>
 6         <姓名 中英文="中文">马克</姓名>
 7         <籍贯>中国</籍贯>
 8         <地址>四川省乐山市滨河路</地址>
 9         <电话 手机座机="手机" 号码="123456"></电话>
10     </公民>
11 </*公民>
View Code

TestValidate2.java

根据DTD文件写XML文件,并验证有效性根据DTD文件写XML文件,并验证有效性
 1 package test2;
 2 import java.io.File;
 3 import java.util.Scanner;
 4 
 5 import javax.xml.parsers.DocumentBuilder;
 6 import javax.xml.parsers.DocumentBuilderFactory;
 7 
 8 import org.w3c.dom.Document;
 9 import org.xml.sax.SAXException;
10 import org.xml.sax.SAXParseException;
11 import org.xml.sax.helpers.DefaultHandler;
12 
13 public class TestValidate2 {
14 
15     public static void main(String[] args) {
16         String fileName=null;
17         try{Scanner reader=new Scanner(System.in);
18         System.out.println("请输入要验证有效性的XML文件的名字:");
19         fileName=reader.nextLine();
20         DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
21         factory.setValidating(true);
22         DocumentBuilder builder=factory.newDocumentBuilder();
23         MyHandler handler=new MyHandler();
24         builder.setErrorHandler(handler);
25         Document document=builder.parse("src/test2/citizen.xml");
26         if(handler.errorMessage==null)
27             System.out.println(fileName+"文件是有效的");
28         else
29             System.out.println(fileName+"文件不是有效的");
30         
31         }
32         catch(Exception e){
33             System.out.println(e);
34         }
35 
36     }
37 
38 }
39 
40 class MyHandler extends DefaultHandler{
41     String errorMessage=null;
42     public void error(SAXParseException e) throws SAXException{
43         errorMessage=e.getMessage();
44         System.out.println("一般错误:"+errorMessage);
45     }
46     public void fatalError(SAXParseException e) throws SAXException{
47         errorMessage=e.getMessage();
48         System.out.println("致命错误:"+errorMessage);
49     }
50 }
View Code