XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容
2016-05-31 13:16
525 查看
一、新建Demo2类:
二、建立自定义MyDefaulthander2
<contactList>
<contact id="001" name="eric">
<name>张三</name>
<age>20</age>
<phone>134222223333</phone>
<email>zhangsan@qq.com</email>
<qq>432221111</qq>
</contact>
<contact id="002" name="jacky">
<name>eric</name>
<age>20</age>
<phone>134222225555</phone>
<email>lisi@qq.com</email>
<qq>432222222</qq>
</contact>
</contactList>
import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * 读取contact.xml文件,完整输出文档内容 * @author APPle * */ public class Demo2 { public static void main(String[] args)throws Exception { //1.创建SAXParser SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); //2.读取xml文件 MyDefaultHandler2 handler = new MyDefaultHandler2(); parser.parse(new File("./src/contact.xml"), handler); String content = handler.getContent(); System.out.println(content); } }
二、建立自定义MyDefaulthander2
import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * SAX处理器程序 * @author APPle */ public class MyDefaultHandler2 extends DefaultHandler { //存储xml文档信息 private StringBuffer sb = new StringBuffer(); //获取xml信息 public String getContent(){ return sb.toString(); } /** * 开始标签 */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { sb.append("<"+qName); //判断是否有属性 if(attributes!=null){ for(int i=0;i<attributes.getLength();i++){//int getLength() 返回此列表中的属性个数。 //得到属性名称 id="001" String attrName = attributes.getQName(i);//String getQName(int index) 通过索引查找属性的 XML 限定(前缀)名。 //得到属性值 String attrValue = attributes.getValue(i);//String getValue(int index) 通过索引查找属性的值。 sb.append(" "+attrName+"=\""+attrValue+"\""); } } sb.append(">"); } /** * 文本内容 */ @Override public void characters(char[] ch, int start, int length) throws SAXException { //得到当前读取的文本 String content = new String(ch,start,length); sb.append(content); } /** * 结束标签 */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { sb.append("</"+qName+">"); } }打印输出结果:
<contactList>
<contact id="001" name="eric">
<name>张三</name>
<age>20</age>
<phone>134222223333</phone>
<email>zhangsan@qq.com</email>
<qq>432221111</qq>
</contact>
<contact id="002" name="jacky">
<name>eric</name>
<age>20</age>
<phone>134222225555</phone>
<email>lisi@qq.com</email>
<qq>432222222</qq>
</contact>
</contactList>
相关文章推荐
- java多线程---线程的状态
- 关于Class.getResource和ClassLoader.getResource的路径问题
- hibernate jdbc
- github 上Android相关应用的链接学习
- 91---Criteria的内链接,分页,查询唯一对象,条件查询,分组统计,投影查询,DetachedCriteria
- python 2.7.11 + windows 10 连接 mysql学习记录
- CXF Webservice nonSpring
- Python中变量的作用域(variable scope)
- HttpServletRequest
- Python中变量的作用域(variable scope)
- 美化H标签
- 断点续传
- 面试
- 项目中的五级地址联动效果(js)
- Greta 编译错误
- 如何让多个显示器显示不同屏幕
- 面试题
- The certificate used to sign "bundle id 名字" has either expired or has been revoked
- ISO27001LA 信息安全管理体系主任审核师学习心得
- 如何把Python2的代码转换为Python3的代码