SAX原样读取XML
来源:互联网 发布:淘宝规则 新规 编辑:程序博客网 时间:2024/06/05 04:12
需求:读取contact.xm文件,完整的输出文档内容。
Demo:
package com.sax;
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
/**
* Author:Liu Zhiyong(QQ:1012421396)
* Version:Version_1
* Date:2016年11月10日20:31:26
* Desc:读取contact.xm文件,完整的输出文档内容。
*/
public class ReadXML {
public static void main(String[] args) throws Exception {
//创建SAXParser对象
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
//选择要读取的文档
File file = new File("./src/contact.xml");
MyReadXMLHandler handler = new MyReadXMLHandler();
//解析xml
saxParser.parse(file, handler);
//打印文档内容
System.out.println(handler.getXmlContent());
}
}
MyReadXMLHandler .java :
package com.sax;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class MyReadXMLHandler extends DefaultHandler {
//存储xml文档信息
private StringBuffer sb = new StringBuffer();
public String getXmlContent(){
return sb.toString();
}
/**
* 开始标签时调用
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
sb.append("<" + qName);
//拿到标签内的属性
for(int i=0; i<attributes.getLength(); i++){
//得到属性名
String attName = attributes.getQName(i);
//得到属性值
String attValue = attributes.getValue(i);
sb.append(" " + attName + "=\"" + attValue + "\"");
}
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 + "/>");
}
}
Contact.java:
package com.sax;
public class Contact {
private String id;
private String name;
private String age;
private String phone;
private String email;
private String qq;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
@Override
public String toString() {
return "Contact [id=" + id + ", name=" + name + ", age=" + age
+ ", phone=" + phone + ", email=" + email + ", qq=" + qq + "]";
}
}
contact.xml:
<?xml version="1.0" encoding="utf-8"?>
<contactList>
<contact id="001" att1="属性值1">
<name>木丁西<nameNode>小刘</nameNode></name>
<age>18</age>
<phone>18071897425</phone>
<email>1012421396@qq.com</email>
<qq>1012421396</qq>
</contact>
<木丁西>
这是个什么鬼。
</木丁西>
<contact id="002">
<name>刘先森</name>
<age>20</age>
<phone>18771897466</phone>
<email>561242139@qq.com</email>
<qq>561242139</qq>
</contact>
<abc>
</abc>
</contactList>
效果:
0 0
- SAX原样读取XML
- 使用SAX读取XML文件的练习--(将读取的XML文件原样输出)
- Dom4j原样读取XML
- SAX 读取xml文件
- SAX读取XML文件
- SAX方式读取XML
- QT SAX读取XML
- XML配置文件的读取(sax)
- java读取xml配置文件(sax)
- java读取xml配置文件(sax)
- 使用SAX读取XML文件
- Android SAX读取XML文件
- 使用SAX读取XML文件
- SAX读取XML报错
- SAX方式读取XML文件
- 使用SAX读取XML文件
- 利用SAX解析读取XML文件
- Java读取XML文件之SAX篇
- PHP总结日记2(php课程精炼)!
- 算法导论 练习题 2.3-7
- 正则表达式在Android中的使用
- AngularJS 1,AngularJS 2,Vue 1 ,Vue 2, React之间的区别和优劣势比较
- csdn如何转载别人的文章
- SAX原样读取XML
- RabbitMQ的学习总结
- 牛顿迭代法(Newton's Method)
- 漫步数学分析三十五——均值定理
- 18年A公司内推在线编程题--正态分布随机点在爱心曲线中的概率c++
- SAX将xml文档信息封装到对象中
- 数据结构:单链表就地逆置
- 最常用的路由协议(RIP-1/2 OSPF IS-IS BGP)的特点比较
- 树和森林的相互转化