您的位置:首页 > 其它

使用SAX读取XML文件的练习--(将读取的XML文件原样输出)

2016-12-15 08:52 483 查看
实现的功能:用SAX读取contact.xml 文件并将其原样输出

XML文件:contact.xml

<?xml version="1.0" encoding="utf-8"?>
<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>

功能实现的功能类(处理程序):MyDefaultHandler2.java

package SAX;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/*
* SAX处理器程序
*/
public class MyDefaultHandler2 extends DefaultHandler {
private StringBuffer sb = new StringBuffer();
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++) {
//得到属性的名称
String attrName = attributes.getQName(i);
//得到属性值
String attrValue = attributes.getValue(i);
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+">");
}
}


 

功能实现的主程序:Demo_sax1.java

package SAX;

import java.io.File;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

/*
* 读取contact.xml问价,完整的输出文档内容
*/

public class Demo_sax1 {
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);
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐