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();
}
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());
}
}
}
关于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());
}
}
}
相关文章推荐
- 学习笔记之利用ajax请求xml文件,解析其中内容
- 【学习笔记】JAVA之使用dom4j对xml文件解析
- 学习笔记-Java中的xml文件读取之DOM4J解析
- Android 个人学习笔记之---SAX解析XML文件(有一个坑爹的问题)
- Symbian学习笔记(16) - 解析XML文件(下)
- 个人学习笔记之-DOM解析XML文件
- 个人安卓学习笔记---分别利用SAX、DOM和Pull实现对XML文件的解析并进行单元测试
- 学习笔记-Java中的xml文件读取之SAX解析
- 【coder-pig教程学习笔记4】xml文件解析
- Mars Android视频学习笔记——01_20_XML文件解析
- Maven学习笔记二eclipse如何使用 Maven、Maven目录pom.xml文件的解析、maven 和maven项目之间的关系
- Java之DOM4J方式解析XML文件(学习笔记)
- Symbian学习笔记(15) - 解析XML文件(上)
- 慕课学习笔记之DOM,SAX,JDOM,DOM4J解析XML文件
- Java之JDOM方式解析XML文件(学习笔记)
- Symbian学习笔记(16) - 解析XML文件(下)
- glib 学习笔记,解析xml文件
- xml学习笔记②PHP DOM--对xml文件进行解析操作
- 学习笔记-Java中的xml文件读取之DOM解析
- 学习笔记-Java中的xml文件读取之JDOM解析