SAX和Domj4来解析xml的方法

SAX的解析只可以实现查询功能,不可以实现增删查改的功能,而增删查改的功能要在Domj4的包下才可以完成。


* SAX解析方法
* 解析器


* 获取解析器的工厂

       SAXParserFactory factory = SAXParserFactory.newInstance();
* 获取解析器对象

       SAXParser parser =  factory.newSAXParser();
* 解析XML(XML的文件的地址,事件处理器)

parser.parse("src/book2.xml", new MyHandler2());

然后调用DefaulHander方法来指定查询的内容

*DefaulHander事件处理器,
 自己编写的类,需要继承DefalutHandler类,重写三个方法,在右击后在souruc中的overr中选择。
* startElement()
* characters()
* endElement()


   * DOM4J的解析(必须会,企业中用的多)
* 先下载DOM4J相应的jar包。导入工程中,才能使用。
* 把dom4j-1.6.1.jar导入到工程中。
* WEB项目:复制dom4j-1.6.1.jar到WebRoot -- WEB-INF -- lib里面。就ok。

*用DOM4J来解析时可以结合API文档来解析


1,来查询获取xml文件的内容     
public static void run1() throws Exception{
//获取解析器对象
SAXReader reader=new SAXReader();
//解析xml,返回Document对象
Document document=reader.read("src/book2.xml");
//获取根节点(书架标签)
Element root=document.getRootElement();
//获取书的节点
List<Element> books=root.elements("书");
Element book2=books.get(1);
//获取作者的标签
Element author2 =book2.element("作者");
//获取文本内容
System.out.println(author2.getText());

}


2,来向xml文件中添加内容 ,主要用得到方法是addElement()

public static void run2() throws DocumentException, IOException{
//获取解析器对象
SAXReader reader=new SAXReader();
//解析xml,返回Document对象
Document document=reader.read("src/book2.xml");
//获取根节点
Element root=document.getRootElement();
//获取书的节点
Element book2=((List<Element>) root.element("书")).get(1);
//可以直接在第二本书下面添加内容
book2.addElement("猫").setText("我是猫");
//在内存中操作的,所以要回写
XMLWriter writer=new XMLWriter(new FileOutputStream("src/book2.xml"));
//回写文档对象
writer.write(document);
//关闭流
writer.close();
}


3,在指定的位置来向xml文件添加内容,主要用list.add()来向指定的位置添加

public static void run3() throws Exception{
// List
// 获取解析器对象
SAXReader reader = new SAXReader();
// 解析XML
Document document = reader.read("src/book2.xml");
// 获取根节点
Element root = document.getRootElement();
// 获取第二本书
Element book2 = (Element) root.elements("书").get(1);
// 获取书下的所有子节点,返回List集合
List<Element> list = book2.elements();
// 创建元素对象 DocumentHelper.createElement("狗")
Element dog = DocumentHelper.createElement("狗");
dog.setText("大狗");
list.add(1, dog);
// 回写
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book2.xml"),format);
writer.write(document);
writer.close();
}


4,来删除xml文件中指定的内容,主要用remove。

public static void run4() throws Exception{
// 获取解析器对象
SAXReader reader = new SAXReader();
// 解析XML
Document document = reader.read("src/book2.xml");
// 获取根节点
Element root = document.getRootElement();
// 获取猫
Element book2 = (Element) root.elements("书").get(1);
Element cat = book2.element("猫");
// 通过猫获取猫的父节点
// cat.getParent();
// 通过父节点删除猫
book2.remove(cat);
// 回写
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book2.xml"),format);
writer.write(document);
writer.close();
}

5,来修改xml文件中指定的内容,主要用setext()。

public static void run4() throws Exception{
// 获取解析器对象
SAXReader reader = new SAXReader();
// 解析XML
Document document = reader.read("src/book2.xml");
// 获取根节点
Element root = document.getRootElement();
// 获取猫
Element book2 = (Element) root.elements("书").get(1);
Element cat = book2.element("猫");
// 通过猫获取猫的父节点
// cat.getParent();
// 通过父节点删除猫
book2.settext(cat);
// 回写
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book2.xml"),format);
writer.write(document);
writer.close();
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值