xml的简单应用---读与写_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > xml的简单应用---读与写

xml的简单应用---读与写

 2013/9/4 18:14:26  jiaqian0118  程序员俱乐部  我要评论(0)
  • 摘要:简单讲解:XMLeXtensibleMarkupLanguage可扩展标记语言作用:保存数据,用于数据的传递常用于JAVA中框架的配置文件1、XML的语法(掌握)a、xml文件的第一行为声明<?xmlversion=""encoding=""?><?xml:声明当前文档为xml文档version:版本号,1.0,1.1encoding:编码b、xml文件中总会有一对根元素c、xml的标记必须有结尾d、xml元素必须有正确的嵌套e、实体<:&lt;>
  • 标签:应用 XML

简单讲解:

XML? eXtensible Markup Language 可扩展标记语言
????? 作用:保存数据,用于数据的传递
??????常用于JAVA中框架的配置文件
1、XML的语法(掌握)
??? a、xml 文件的第一行为声明
???? <?xml version="" encoding=""?>
???? <?xml:声明当前文档为xml文档
???? version:版本号,1.0,1.1
???? encoding:编码
?b、xml文件中总会有一对根元素
?c、xml的标记必须有结尾
?d、xml元素必须有正确的嵌套
?e、实体
??<:&lt;
??>:&gt;
??&:&amp;
?f、CDATA区:存储带有特殊字符的文本数据
??<![CDATA[
??......
??]]>
?g、注释
?h、xml标记名区分大小写,属性值必须使用""或'',
??? 属性通常需要给属性赋值
???
?满足xml文件语法的要求xml文件,称为格式良好的xml文件
?
?xml文档的解析:浏览器,myeclipse,xml spy
??
2、DTD(Schema)(了解)?
?? Document Type Definition
?? 作用:限制xml文件的结构
??
?? 编写DTD,可以在xml文件内部,也可以定义单独的
?? DTD文件
??
?? 引入:DTD
?? a、引入一定范围内的DTD
?? <!DOCTYPE 根元素 SYSTEM URL>
?? b、引入一个公共的DTD
?? <!DOCTYPE 根元素 PUBLIC "名字" URL>
??
?? dtd,xml需求:
?? 根元素:struts
?? struts子元素:package,global-results零个或多个
?? package元素中有三个属性,name,extends,namespace
?? global-results中有两个属性,name,type
??
?? package子元素:action,零个或多个
?? action中三个属性:name(必须有),class(必须有),method
??
?? action子元素:result,零个或多个
?? result中有两个属性:name(必须有),type??
?? <!ELEMENT struts .....>
?? .........
?? <!ATTLIST..... >
??
3、JAVA 解析XML(掌握)
?a、解析XML,获取数据
?b、java中的数据写入到XML文件
?
?JAVA中提供两种解析方式
?DOM 解析? xml中的dom? java
?SAX 解析??
?jdom/dom4j

实例代码:

TestDom4jWrite.java

package com.tarena.tts;

import java.io.FileOutputStream;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

public class TestDom4jWrite {
?public static void main(String[] args) throws Exception {
??// 创建一个空白的Document
??Document doc = DocumentHelper.createDocument();
??Element root = doc.addElement("books");
??for (int i = 0; i < 1000; i++) {
???Element book = root.addElement("book");
???book.addElement("name").setText("Name" + i);
???book.addElement("price").setText((int) (Math.random() * 100) + "");
??}

XMLWriter writer = new XMLWriter(new FileOutputStream(
????"d:/books.xml"));
??writer.write(doc);
??writer.close();
?}
}

TestDom4jRead.java

package com.tarena.tts;

import java.io.FileInputStream;
import java.util.List;

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

public class TestDom4jRead {
? public static void main(String[] args) throws Exception {
??? // SAXReader 用于读取XML文档
??? SAXReader reader = new SAXReader();
??? // Document 用于封装整个XML文档
??? Document doc = reader.read(new FileInputStream("d:/books.xml"));
??? // Element 用于封装元素
??? Element root = doc.getRootElement();

//System.out.println(root.getName());
??? // List list = root.elements();
??? List<Element> bookList = root.elements("book");
??? for (Element book : bookList) {
????? Element name = (Element)book.elements("name").get(0);
????? System.out.println(name.getText());
??? }

}
}
TestSAX.java

package com.tarena.tts;

import java.io.FileInputStream;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.AttributeList;
import org.xml.sax.HandlerBase;
import org.xml.sax.SAXException;

public class TestSAX {
? public static void main(String[] args) throws Exception {
??? SAXParserFactory factory = SAXParserFactory.newInstance();
??? SAXParser parser = factory.newSAXParser();
??? parser.parse(new FileInputStream("d:/books.xml"), new MyHandler());

}

}

class MyHandler extends HandlerBase {
? @Override
? public void startElement(String name, AttributeList attributes)
????? throws SAXException {
??? System.out.println(name + "开始");
? }

@Override
? public void endElement(String name) throws SAXException {
??? System.out.println(name + "结束");
? }

}


TestXPath.java

package com.tarena.tts;

import java.io.FileInputStream;
import java.util.List;

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

public class TestXPath {
?public static void main(String[] args) throws Exception {
??/*
?? * XPath...
?? */
??SAXReader reader = new SAXReader();
??Document doc = reader.read(new FileInputStream("d:/books_new.xml"));

List<Element> list = doc
????.selectNodes("/books/book[price>=80 and price<90]/name");

for (Element name : list) {
???System.out.println(name.getText());
??}

}
}

运行环境需要Jar包:

dom4j-1.6.1.jar
???? ?jaxen-1.1-beta-6.jar

发表评论
用户名: 匿名