import
java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.helpers.DefaultHandler;
public class SAXHandler extends DefaultHandler ... {
public static void main(String[] args) throws Exception ...{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//通知文档生成工厂打开验证特性
factory.setValidating(true);
//生成器将不会报告文本结点中的空白字符
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("b.xml"));
Element root = doc.getDocumentElement();
NodeList children = root.getChildNodes();
for (int i = 0; i < children.getLength(); i++) ...{
Node child = children.item(i);
System.out.println(child.getNodeName());
}
}
}
import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.helpers.DefaultHandler;
public class SAXHandler extends DefaultHandler ... {
public static void main(String[] args) throws Exception ...{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//通知文档生成工厂打开验证特性
factory.setValidating(true);
//生成器将不会报告文本结点中的空白字符
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("b.xml"));
Element root = doc.getDocumentElement();
NodeList children = root.getChildNodes();
for (int i = 0; i < children.getLength(); i++) ...{
Node child = children.item(i);
System.out.println(child.getNodeName());
}
}
}
XML文件
<?
xml version="1.0" encoding="gb2312"
?>
<! DOCTYPE student SYSTEM "b.dtd" >
< student >
< name idx ="1" >
< age > 20 </ age >
< addr > 湖北省广水市长岭镇水城大道 </ addr >
< tel > 01085895663 </ tel >
</ name >
</ student >
<! DOCTYPE student SYSTEM "b.dtd" >
< student >
< name idx ="1" >
< age > 20 </ age >
< addr > 湖北省广水市长岭镇水城大道 </ addr >
< tel > 01085895663 </ tel >
</ name >
</ student >
DTD文件
<!
ELEMENT student (name)
>
<! ATTLIST name idx CDATA #REQUIRED >
<! ELEMENT name (age,addr,tel) >
<! ELEMENT age (#PCDATA) >
<! ELEMENT addr (#PCDATA) >
<! ELEMENT tel (#PCDATA) >
<! ATTLIST name idx CDATA #REQUIRED >
<! ELEMENT name (age,addr,tel) >
<! ELEMENT age (#PCDATA) >
<! ELEMENT addr (#PCDATA) >
<! ELEMENT tel (#PCDATA) >
当解析器报告错误时,应用程序希望对该错误执行某些操作,如、记录到日志中,把它显示给用户,或者是抛出一个异常以放弃解析。因些,在验证时,应该安装一个错误处理器。应该提供一个实现了ErrorHandler接口的对象。这个接口有三个方法:
void warning(SAXParseException exception)
void error(SAXParseException exception)
void fatalError(SAXParseException exception)
可以通过DocumentBuilder类的serErrorHandler方法来安装错误处理器:builder.setErrorHandler(handler);