package hf.firstclass.a_SAX;
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
/**
* 将XML标签信息原样打印到控制台
* @author LZK
*
*/
//SAX解析主出程序
public class TestSAX {
public static void main(String[] args) throws Exception {
//1.得到解析器工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
//2.得到解析器
SAXParser parser=factory.newSAXParser();
//3.解析XML文件
//建立一个处理器
MyDefaultHandler2 handler = new MyDefaultHandler2();
//解析文件
parser.parse(new File("./src/contact.xml"), handler);
String content=handler.getContent();
//在控制台上打印出内容
System.out.println(content);
}
}
package hf.firstclass.a_SAX;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
//SAX处理器程序
public class MyDefaultHandler2 extends DefaultHandler{
//建立一个容器,用于存储数据
private StringBuilder sb=new StringBuilder();
//提供一个方法,将容器内容返回出去
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+"\"");
}
}
//实现的效果就像这样 <contact id="001" hobby="eat">
sb.append(">");
}
@Override
public void endElement(String uri, String localName,
String qName) throws SAXException {
//添加结束标签
sb.append("</"+qName+">");
}
@Override
public void characters(char[] ch, int start, int
length) throws SAXException {
//添加文本内容
String content=new String(ch,start,length);
sb.append(content);
}
}
源XML文件
<?xml version="1.0" encoding="utf-8"?>
<contact-list >
<contact id="001" hobby="eat">
<name>张三</name>
<gender>男</gender>
<age>22</age>
<phone>17728394033</phone>
<email>1014420122@qq.com</email>
<address>130号</address>
</contact>
<contact id="002" hobby="drink">
<name>李四</name>
<gender>女</gender>
<age>23</age>
<phone>13721102938</phone>
<email>2971821987@qq.com</email>
<address>131号</address>
</contact>
</contact-list>
XML解析:SAX解析
最新推荐文章于 2024-09-22 15:25:09 发布