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 >
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 </*公民>
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 }