clipse里XML调整格式快捷键:Ctrl+Shift+F /*SAX解析的
内容处理器*/ public class PersonHandler extends DefaultHandler { private List<Teacher> teachers=null; private Teacher teacher; private String tag; public List<Teacher> getTeachers() { return teachers; } @override //重新startDocument()
方法,开始解析XML时回调的
方法 public void startDocument() throws SAXException { //super.startDocument(); teachers=new ArrayList<Teacher>(); } @override public void endDocument() throws SAXException { super.endDocument(); Sy
stem.out.println("XML解析完毕"); } //解析开始元素<> uri——表示
标签的命名空间 localName——元素名(不带前缀) qName——带前缀的元素
名称 attributes——
属性的集合 @override public void startElement(String uri,String localName,String qNname,Attributes attributes ) throws SAXException { //super.startElement(uri,localName,gName,attributes); if("teacher".equals(qName)) { teacher=new Teacher(); teacher.setId(Integer.parseInt(attributes.getValue("id"))); //取出
属性,并
添加到teacher中 } tag=qName; } //解析结束元素</> @override public void endElement(String uri,String gNname,Attributes attributes ) throws SAXException { //super.endElement(uri,attributes); if("teacher".equals(gName)) { teachers.add(teacher); } tag=null; } //解析文本
内容时解析的
方法 @override public void ch
aracters(char[] ch,int start,int length) throws SAXException { //super.ch
aracters(ch,start,length); if(tag!=NULL){ if("name".equals(tag)) { teacher.setName(new String(ch,length)); }else("desc".equals(tag)) { teacher.setDesc(new String(ch,length)); } } } } public class SAXDemo { public static void main(String args[]) { //创建SAX解析器工厂 SAXParserFactory spf=SAXParserFactory.newInstance(); //通过解析器工厂创建解析器 SAXParser sax=spf.newSAXParser(); //创建SAX解析器要使用的事件帧听器对象 PersonHandler ph=new PersonHandler(); //构建
一个指向指定
文件的输入流 InputStream is=Thread.currentThread().getContextClassLoader().getResourceA
sstream("person.xml"); //开始解析,并返回Document对象 sax.parse(is,ph); List<Teacher> list=ph.getTeachers(); Sy
stem.out.println(list); } //根据文档的节点
获取数据 NodeList nodeList=doc.getElementsByTagName("teacher"); List<Teacher> teachers=new ArrrayList(Teacher)(); Teacher t=null; for(int i=0;i<nodeList.getLength();i++) { t=new Teacher(); Node teacherNode =nodeList.item(i); //
获取当前节点的
属性id Teachernode.getAttributes().getNamedItem("id").getNodeValue(); t.setId(Integer.parseInt(id)); //
获取当前节点下的所有子节点列表 NodeList childNodeList=teacherNode.getChildNodes(); for(int j=0;j<childNodeList.getLength();j++ ) { Node childNode=childNodeList.item(j); String tagname= childNode.getNodeName(); if("name"equals(tagname)) { t.setName(childNode.getF
irstChild().getNodeValue); }else("desc"equals(tagname)) { t.setDesc(childNode.getF
irstChild().getNodeValue); } } teachers.add(t); } }