xml的解析方法
来源:互联网 发布:淘宝上的补漆笔好用吗 编辑:程序博客网 时间:2024/04/30 03:40
XML的解析方法
先写一个xml文件
(一)Sax
package cn.csdn.sax;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
public class Dome01 {
public static void main(String[] args) {
// 创建解析的工厂
SAXParserFactory spf = SAXParserFactory.newInstance();
// 创建解析器
try {
SAXParser sparser = spf.newSAXParser();
// 创建事件的处理器
XMLReader sreader = sparser.getXMLReader();
// 设置处理器的监听
sreader.setContentHandler(new MyCHandler());
// 加载xml文件、
sreader.parse("src//book.xml");
// 得到m_j的属性
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// class MyContentHandler implements ContentHandler{//
class MyContentHandler extends DefaultHandler {
int count = 0;// 计数
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// 输出从0开始第二个book标签的author的值
if (count == 2) {
System.out.println(new String(ch, start, length));
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (qName.equals("author")) {
count++;
}
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
if (qName.equals("author")) {
}
}
}
我专门对DefaultHandler接口进行了分析,如下的这个类,继承了DefaultHandler 接口,在该类中实现了该接口 的所有方法。
package cn.csdn.sax;
import java.io.IOException;
import java.net.ContentHandler;
import java.net.URLConnection;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
public class MyCHandler extends ContentHandler implements
org.xml.sax.ContentHandler {
@Override
public Object getContent(URLConnection urlc) throws IOException {
// TODO Auto-generated method stub
System.out.println("这里是getContent方法,urlc="+urlc);
return null;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是charaters方法,ch="+ch.length+" start="+start+" length="+length);
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是endDocument方法");
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是endElement方法,uri="+uri+" localName="+localName+" qName="+qName);
}
@Override
public void endPrefixMapping(String prefix) throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是endPrefixMapping方法,prefix="+prefix);
}
@Override
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是ignorableWhitespace方法,ch的长度="+ch.length+" start="+start+" length="+length);
}
@Override
public void processingInstruction(String target, String data)
throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是processingInstruction方法,target="+target+" data="+data);
}
@Override
public void setDocumentLocator(Locator locator) {
// TODO Auto-generated method stub
System.out.println("这里是setDocumentLocator方法,locator="+locator);
}
@Override
public void skippedEntity(String name) throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是skippedEntity方法, name="+name);
}
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是starDocument方法");
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是startElement方法,uri="+uri+" localName="+localName+" qName="+qName);
}
@Override
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
// TODO Auto-generated method stub
System.out.println("这里是startPerfixMapping方法,prefix="+prefix+" uri="+uri);
}
}
运行结果如下:
这里是setDocumentLocator方法,
locator=com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy@26d4f1
这里是starDocument方法
这里是startElement方法,uri= localName= qName=books
这里是ignorableWhitespace方法,ch的长度=8192 start=249 length=4
这里是startElement方法,uri= localName= qName=book
这里是ignorableWhitespace方法,ch的长度=8192 start=260 length=8
这里是startElement方法,uri= localName= qName=name
这里是charaters方法,ch=8192 start=274 length=6
这里是endElement方法,uri= localName= qName=name
这里是ignorableWhitespace方法,ch的长度=8192 start=288 length=8
这里是startElement方法,uri= localName= qName=author
这里是charaters方法,ch=8192 start=304 length=3
这里是endElement方法,uri= localName= qName=author
这里是ignorableWhitespace方法,ch的长度=8192 start=317 length=8
这里是startElement方法,uri= localName= qName=price
这里是charaters方法,ch=8192 start=332 length=5
这里是endElement方法,uri= localName= qName=price
这里是ignorableWhitespace方法,ch的长度=8192 start=346 length=4
这里是endElement方法,uri= localName= qName=book
这里是ignorableWhitespace方法,ch的长度=32 start=0 length=8
这里是startElement方法,uri= localName= qName=book
这里是ignorableWhitespace方法,ch的长度=8192 start=374 length=8
这里是startElement方法,uri= localName= qName=name
这里是charaters方法,ch=8192 start=388 length=7
这里是endElement方法,uri= localName= qName=name
这里是ignorableWhitespace方法,ch的长度=8192 start=403 length=8
这里是startElement方法,uri= localName= qName=author
这里是charaters方法,ch=8192 start=440 length=4
这里是endElement方法,uri= localName= qName=author
这里是ignorableWhitespace方法,ch的长度=8192 start=454 length=8
这里是startElement方法,uri= localName= qName=price
这里是charaters方法,ch=8192 start=469 length=5
这里是endElement方法,uri= localName= qName=price
这里是ignorableWhitespace方法,ch的长度=8192 start=483 length=4
这里是endElement方法,uri= localName= qName=book
这里是ignorableWhitespace方法,ch的长度=8192 start=495 length=4
这里是startElement方法,uri= localName= qName=book
这里是ignorableWhitespace方法,ch的长度=8192 start=506 length=8
这里是startElement方法,uri= localName= qName=name
这里是charaters方法,ch=8192 start=520 length=7
这里是endElement方法,uri= localName= qName=name
这里是ignorableWhitespace方法,ch的长度=8192 start=535 length=8
这里是startElement方法,uri= localName= qName=author
这里是charaters方法,ch=8192 start=572 length=12
这里是endElement方法,uri= localName= qName=author
这里是ignorableWhitespace方法,ch的长度=8192 start=594 length=8
这里是startElement方法,uri= localName= qName=price
这里是charaters方法,ch=8192 start=609 length=5
这里是endElement方法,uri= localName= qName=price
这里是ignorableWhitespace方法,ch的长度=8192 start=623 length=4
这里是endElement方法,uri= localName= qName=book
这里是ignorableWhitespace方法,ch的长度=8192 start=635 length=4
这里是startElement方法,uri= localName= qName=book
这里是ignorableWhitespace方法,ch的长度=8192 start=646 length=8
这里是startElement方法,uri= localName= qName=name
这里是charaters方法,ch=8192 start=660 length=7
这里是endElement方法,uri= localName= qName=name
这里是ignorableWhitespace方法,ch的长度=8192 start=675 length=8
这里是startElement方法,uri= localName= qName=author
这里是charaters方法,ch=8192 start=712 length=4
这里是endElement方法,uri= localName= qName=author
这里是ignorableWhitespace方法,ch的长度=8192 start=726 length=8
这里是startElement方法,uri= localName= qName=price
这里是charaters方法,ch=8192 start=741 length=5
这里是endElement方法,uri= localName= qName=price
这里是ignorableWhitespace方法,ch的长度=8192 start=755 length=4
这里是endElement方法,uri= localName= qName=book
这里是ignorableWhitespace方法,ch的长度=32 start=0 length=6
这里是endElement方法,uri= localName= qName=books
这里是endDocument方法
(二)Dom4j
package cn.csdn.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dome01 {
public static void main(String[] args) {
// 创建读取器
SAXReader sreader = new SAXReader();
try {
// 根据读取器读取xml文件,获得Document实例
Document document = sreader.read(new File("src//book.xml"));
// 获取根节点
Element element=document.getRootElement();
System.out.println(element.getName());
// 调用迭代方法,分别输出每个节点的值
parser(element);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//==================第一种迭代方法=====================
private static void parser(Element element) {
attParser(element);
// 获得element对应的结点集合
List<Element> entities = element.elements();
for(Element entity : entities){
if(entity.isTextOnly()){
attParser(entity);
System.out.println(entity.getName()+"-----"+entity.getText());
}else{
parser(entity);
}
}
}
private static void attParser(Element ele) {
List<Attribute> att = ele.attributes();
for(Attribute entity : att){
System.out.println(entity.getName()+"*********"+entity.getValue());
}
}
}
/*//==================第二种迭代方法=====================
private static void parser(Element element) {
attParser(element);
// TODO Auto-generated method stub
for(Iterator<Element> it=element.elementIterator(); it.hasNext();){
Element ele = it.next();
// 判断是否是只有文本
if(ele.isTextOnly()){
attParser(ele);
System.out.println(ele.getName()+"---------"+ele.getText());
}else{
parser(ele);
}
}
}
private static void attParser(Element ele) {
// TODO Auto-generated method stub
for(Iterator<Attribute> it = ele.attributeIterator(); it.hasNext();){
Attribute att = it.next();
System.out.println(att.getName()+"********"+att.getValue());
}
}
}
*/
XML文档的增删改查
package cn.csdn.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dome01 {
// 查
public static void main(String[] args) {
// 创建读取器
SAXReader sreader = new SAXReader();
try {
// 根据读取器读取xml文件,获得Document实例
Document document = sreader.read(new File("src//book.xml"));
// 获取根节点
Element element=document.getRootElement();
System.out.println(element.getName());
// 调用迭代方法
parser(element);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 第一种方法迭代输出查询的所有的元素
private static void parser(Element element) {
attParser(element);
// 获得element对应的结点集合
List<Element> entities = element.elements();
for(Element entity : entities){
if(entity.isTextOnly()){
attParser(entity);
System.out.println(entity.getName()+"-----"+entity.getText());
}else{
parser(entity);
}
}
}
private static void attParser(Element ele) {
List<Attribute> att = ele.attributes();
for(Attribute entity : att){
System.out.println(entity.getName()+"*********"+entity.getValue());
}
}
}
/*// 第二种方法迭代输出查询的所有的元素
private static void parser(Element element) {
attParser(element);
// TODO Auto-generated method stub
for(Iterator<Element> it=element.elementIterator(); it.hasNext();){
Element ele = it.next();
// 判断是否是只有文本
if(ele.isTextOnly()){
attParser(ele);
System.out.println(ele.getName()+"---------"+ele.getText());
}else{
parser(ele);
}
}
}
private static void attParser(Element ele) {
// TODO Auto-generated method stub
for(Iterator<Attribute> it = ele.attributeIterator(); it.hasNext();){
Attribute att = it.next();
System.out.println(att.getName()+"********"+att.getValue());
}
}
}
*/
package cn.csdn.dom4j;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dome02 {
//用dom4j写、改xml文档
public static void main(String[] args) throws IOException, DocumentException {
/* // 增
// ========创建一个xml=========
// 创建一个Document对象,有两种方法
Document document = DocumentHelper.createDocument();
// DocumentFactory df= new DocumentFactory();
// Document doc = df.createDocument();
// 创建根元素
Element root = document.addElement("books");
// 创建其他的元素、
Element book = root.addElement("book");
Element name = book.addElement("name");
name.setText("java开发与设计");
Element price = book.addElement("price");
price.setText("¥100");
Element author = book.addElement("author");
// 添加属性
author.addAttribute("address", "河北");
author.setText("aa");
// 消除乱码
OutputFormat os = new OutputFormat(" ",true,"GBK");
// 设置要写入的文件
XMLWriter xwriter = new XMLWriter(new FileWriter("src//java_book.xml"),os);
// 写xml文件
xwriter.write(document);
xwriter.close();
// ======================
*/
/*// ===========插入=====
// 创建一个读xml的实例
SAXReader xreader = new SAXReader();
// 读出xml文档
Document document = xreader.read(new File("src//java_book.xml"));
// 创建一个Element对象
Element sex = DocumentHelper.createElement("sex");
sex.setText("女");
// 根据document对象,创建一个需要插入的element对象
Element root = document.getRootElement();
// 获得book的所有属性
List list = root.element("book").elements();
//
list.add(2,sex);
// 写入xml文件中
XMLWriter writer = new XMLWriter(new FileWriter("src//java_book.xml"),new OutputFormat("",true,"GBK"));
writer.write(document);
writer.close();*/
// ============删除========
// 获得读的对象
SAXReader sreader = new SAXReader();
// 创建Document对象
Document doc=sreader.read(new File("src//java_book.xml"));
// 获得根结点
Element root = doc.getRootElement();
// 获得要删除的结点的父结点
Element book = root.element("book");
// 获得要删除的结点
Element sex = book.element("sex");
// 删除sex结点
book.remove(sex);
// 写入xml文件中
XMLWriter writer = new XMLWriter(new FileWriter("src//java_book.xml"),new OutputFormat("",true,"GBK"));
writer.write(doc);
writer.close();
}
}
- XML的解析方法
- 解析xml的方法
- xml的解析方法
- 解析XML的方法
- 解析XML的方法
- XML解析的方法
- 解析XML的方法
- 关于xml的解析方法
- VC解析XML的方法
- javascript解析XML的方法
- javascript解析XML的方法
- c# 解析xml 的方法
- java解析xml的方法
- 解析XML文件的方法
- xml文件的解析方法
- XML的解析方法详解
- PHP解析xml的方法
- Dom4j解析Xml的方法
- 在Carbide c/c++中如何打开一个已存在的工程
- vs2008那里每行有空格的地方都会显示有点了,省略号那种
- 第一真正登陆CSDN
- html5做圆角
- 有CSDN号啦
- xml的解析方法
- XML的schema约束的用法
- 算法导论书评
- 新手学习java的心得体会
- 使用JavaScrpt实现网页字体的自由选择
- 马云发家之道-懒
- 分享天地<开源>
- DirectX中绘制文字效果分析(3D/c++)
- Java基础:String