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

来源:互联网 发布:java 引用 参数 编辑:程序博客网 时间:2024/05/17 04:36

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 stubsuper.startElement(uri, localName, qName, attributes);flag = qName;}@Override//碰到内容开始public void characters(char[] ch, int start, int length)throws SAXException {// TODO Auto-generated method stubsuper.characters(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 stubsuper.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"));//使用XpathList<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"));//使用XpathList<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"));//使用XpathList<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"));//使用XpathList<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"));//使用XpathList<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"));//使用XpathList<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"));//XpathList<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"));//使用XpathList<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"));//使用XpathList<Element> list = document.selectNodes("/AAA");//遍历打印for (Element element : list) {System.out.println(element.getName());}}}


原创粉丝点击