您的位置:首页 > Web前端 > JavaScript

JSP学习笔记(7)_xml文件解析

2017-07-25 23:04 405 查看
JSP学习笔记(7)_xml文件解析



关于xml文件的几种解析方法。



1.xml

XML:   extensiable markup language   可扩展标记语言





特点:标记可以由用户自己随意扩展.  
作用:

1.做其它技术的配置文件

2.在不同语言环境下交换数据

注意:使用以下xml解析方法要导包



2.解析方法

2.1 jdom

2.2 dom4j

实现:利用dom4j实现xml文件的增删查改

import java.io.File;
import java.io.FileOutputStream;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.dom4j.tree.DefaultElement;

public class Test01 {
public static void main(String[] args) throws Exception {
//查看
find();
//增加
//add();
//修改
//update();
//删除
//delete();
}
private static void delete() throws Exception {
// 创建解析器
SAXReader sr = new SAXReader();
//解析xml文件,得到document对象
Document document = sr.read(new File("src/books.xml"));
//获取根节点,再获取子节点
Element root = document.getRootElement();
List<Element> list = root.elements();
//删除方法一
//		Element t=null;
//		//修改水浒传为88元
//		for (Element book : list) {
//			Element title = book.element("title");
//			if("水浒传".equals(title.getText())){
//				t=book;
//				break;
//			}
//		}
//		list.remove(t);
//删除方法二
int size = list.size();
for (int i = 0; i < size; i++) {
Element book = list.get(i);
Element title = book.element("title");
if("水浒传".equals(title.getText())) {
list.remove(book);
break;
}
}

//存盘
OutputFormat of = OutputFormat.createPrettyPrint();
XMLWriter xw = new XMLWriter(new FileOutputStream("src/books.xml"), of);
xw.write(document);

System.out.println("删除成功!");
}

private static void update() throws Exception {
// 创建解析器
SAXReader sr = new SAXReader();
//解析xml文件,得到document对象
Document document = sr.read(new File("src/books.xml"));
//获取根节点,再获取子节点
Element root = document.getRootElement();
List<Element> list = root.elements();
Element t=null;
//修改水浒传为88元
for (Element book : list) {
Element title = book.element("title");
if("水浒传".equals(title.getText())){
Element price = book.element("price");
price.setText("88");
break;
}
}

//存盘
OutputFormat of = OutputFormat.createPrettyPrint();
XMLWriter xw = new XMLWriter(new FileOutputStream("src/books.xml"), of);
xw.write(document);

System.out.println("修改成功!");
}

private static void add() throws Exception {
// 创建解析器
SAXReader sr = new SAXReader();
//解析xml文件,得到document对象
Document document = sr.read(new File("src/books.xml"));
//获取根节点,再获取子节点
Element root = document.getRootElement();
List<Element> list = root.elements();

Element book = new DefaultElement("book");
Element title = new DefaultElement("title");
Element price = new DefaultElement("price");
Element description = new DefaultElement("description");
price.setAttributeValue("unit","元");

title.setText("水浒传");
price.setText("55");
description.setText("3个女人和105个男人的故事");
book.add(title);
book.add(price);
book.add(description);
list.add(book);

//存盘
OutputFormat of = OutputFormat.createPrettyPrint();
XMLWriter xw = new XMLWriter(new FileOutputStream("src/books.xml"), of);
xw.write(document);

System.out.println("添加成功!");
}

private static void find() throws Exception {
// 创建解析器
SAXReader sr = new SAXReader();
//解析xml文件,得到document对象
Document document = sr.read(new File("src/books.xml"));
//获取根节点,再获取子节点
Element root = document.getRootElement();
List<Element> list = root.elements();
for (Element book : list) {
System.out.println("-----------------------");
System.out.println(book.getName());
Element title = book.element("title");
Element price = book.element("price");
Attribute unit = price.attribute("unit");
Element description = book.element("description");

System.out.println("title:"+title.getText());
System.out.println("price:"+price.getText()+unit.getValue());
System.out.println("description:"+description.getText());
}

}
}


2.3 sax

实现:利用sax实现xml文件解析-查看书名“title”

import javax.xml.parsers.SAXParser;

import org.apache.xerces.jaxp.SAXParserFactoryImpl;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class Test{
public static void main(String[] args) throws Exception {
find();
}

private static void find() throws Exception {
//创建解析器
SAXParserFactoryImpl spf = new SAXParserFactoryImpl();
SAXParser sp = spf.newSAXParser();
XMLReader reader = sp.getXMLReader();
//设置事件
reader.setContentHandler(new DefaultHandler(){
private String flag;
@Override
//碰到标记开始
public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
flag = qName;
}
@Override
//碰到内容开始
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.chara
bb32
cters(ch, start, length);
if("title".equals(flag)){
System.out.println(new String(ch,start,length));
}
}
@Override
//碰到结束标志开始
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
}
});

//使用reader去解析一个xml文件,这是没有document对象生成
reader.parse("src/books.xml");
}
}截图:





2.4 Xpath的部分实例

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Test {
public static void main(String[] args) throws Exception {
//test1();
//test2();
//test3();
//test4();
//test5();
//test6();
//test7();
//test8();
//test9();
test10();
}

private static void test10() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test10.xml"));
//使用Xpath
List<Element> list = read.selectNodes("//CCC|//BBB");
for (Element element : list) {
System.out.println(element.getName());
}

}

private static void test9() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test9.xml"));
//使用Xpath
List<Element> list = read.selectNodes("//*[string-length(name()) = 3]");
for (Element element : list) {
System.out.println(element.getName());
}
}

private static void test8() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test8.xml"));
//使用Xpath
List<Element> list = read.selectNodes("//*[name()='BBB']");
for (Element element : list) {
System.out.println(element.getName());
}
}

private static void test7() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test7.xml"));
//使用Xpath//*[count(BBB)=2]
List<Element> list = read.selectNodes("//*[count(BBB)=2]");
for (Element element : list) {
System.out.println(element.getName());
}
}

private static void test6() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test6.xml"));
//使用Xpath
List<Element> list = read.selectNodes("//BBB[@id='b1']");
for (Element element : list) {
System.out.println(element.getName());
}
}

private static void test5() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test5.xml"));
//使用Xpath
List<Element> list = read.selectNodes("//BBB[@id]");

for (Element element : list) {
System.out.println(element.getName());
}
}

private static void test4() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test4.xml"));
//使用Xpath
List<Element> list = read.selectNodes("/AAA/BBB[1]");
for (Element element : list) {
System.out.println(element.getName());
}
}

private static void test3() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test3.xml"));
//Xpath
List<Element> list = read.selectNodes("/AAA/CCC/DDD/*");
for (Element element : list) {
System.out.println(element.getName());
}
}

private static void test2() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document read = sr.read(new File("src/test2.xml"));
//使用Xpath
List<Element> list = read.selectNodes("//BBB");
for (Element element : list) {
System.out.println(element.getName());
}
}

private static void test1() throws Exception {
//创建解析器
SAXReader sr = new SAXReader();
//解析xml文件
Document document = sr.read(new File("src/test1.xml"));
//使用Xpath
List<Element> list = document.selectNodes("/AAA");
//遍历打印
for (Element element : list) {
System.out.println(element.getName());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: