态度决定高度A=X+Y+Z

微信搜索 Android小菜 每日会推送一篇安卓文章,欢迎关注阅读

XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容

一、新建Demo2类:

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>

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32059827/article/details/51544895
个人分类: XML 从零开发Javaee
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭