可扩展标记语言——eXtensible Markup Language
用户可以自己定义语言标记,只要有开始和闭合标签即可。
xsl装饰、修饰xml的显示结果。
dtd约束xml文件中的标记。
Ø XML的优点:
1、xml可以让数据和标记分离。
2、异质信息互通
3、机器语言
4、用交流语言替代html装饰语言
5、简单易用
6、可以自定义、可扩展
Ø XML和HTML比较
| 比较内容 | HTML | XML |
| 可扩展性 | 不具有扩展性、标记固定 | 是元标记语言,可以定义新标记,用户可以自定义标记 |
| 侧重点 | 侧重于信息的表现形式为什么格式被关注 | 侧重于结构化的描述信息,数据是什么为XML所关注 |
| 语法 | 不严格(嵌套、配对) | 严格嵌套、配对,并按照DTD要求输出 |
| 可读性、可维护性 | 难于阅读和维护 | 结构清晰,便于阅读维护 |
| 数据本身、显示 | 数据和显示合为一处 | 数据与显示分离 |
| 重用性 | 低 | 可重用性高 |
Ø JDOM操作XML
JDOM可以很方便的操作XML文档,完成XML内容的创建、修改,已经遍历Document文档中的XML元素,完成查询等。下面我们就用JDOM完成这些功能。
# 准备
首先我们要准备jdom相关的jar包
jdom-jar下载地址:http://www.jdom.org/dist/binary/
jaxen在jdom的zip压缩包中可以找到。
Junit是测试用的,可以不添加。但需要用main方法测试。
其次,是准备测试工作。部分测试代码:
package com.hoo.test;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.jdom.Attribute;
import org.jdom.Comment;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.Text;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.XPath;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* <b>function:</b> JDOM操作XML
* @author hoojo
* @createDate 2011-8-4 下午12:34:09
* @file DocumentTest.java
* @package com.hoo.test
* @project JDOMTest
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
public class DocumentTest {
private XMLOutputter out = null;
@Before
public void init() {
//输出文件信息
out = new XMLOutputter();
}
@After
public void destory() {
if (out != null) {
out = null;
}
System.gc();
}
/**
* <b>function:</b>输出Document文档信息
* @author hoojo
* @createDate 2011-8-5 下午12:10:27
* @param doc
*/
private void print(Document doc) {
//设置XML文件编码格式
//out.setFormat(Format.getCompactFormat().setEncoding("gb2132"));
System.out.println(out.outputString(doc));
}
private void fail(Object o) {
if (o != null) {
System.out.println(o);
}
}
}