根據DTD文件寫XML文件,並驗證有效性


dtd文件

 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文件

 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

 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM