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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇