XML
(Extensible Makeup Language - 可扩展性标志语言)
一切标签即元素
简介
1)可扩展语言(xml)仅仅是存储数据的作用,与数据库不同
2)xml的简单易用在任何应用程序/系统中读/写数据,这使xml很快成为数据交换的唯一公共语言。
特点
1)是独立于软件与硬件的信息传输工具
2)xml用于web开发的许多方面,常用于简化数据的存储和共享
3)简化数据共享、简化数据传输
注意
实体引用
1)实体可以是常用的短语,键盘字符,文件等,在xml中有时实体内还包含了一些字符,如<>" ’ 等,这些必须进行转义
<(< ; ) >(> ; ) &(& ; ) '(&apos ; ) "(" ; )
2)如果一个实体中含有多个符号,则可使用CDATE段即可
<![CDATE[文本内容]]>
ParseXML
解析方式
1)SAX(Simple Api for Xml)- 多用于手机端
是一种XML解析的一种替代的方法。该方法解析速度较快,逐行扫描文档,一边扫描一边解析
- 优点:解析速度快,没有内存压力
- 缺点:不能对节点修改
2)DOM(Document Object Model)- 是w3c组织推荐的一种方式
- 优点:把xml文件在内存中构造树形结构,可以便利和修改节点
- 缺点:如果文件比较大,内存有压力,解析的时间较长
读取xml文档 - SAXReader
导入的包:dom4j.jar
常用的方法
方法 | 使用说明 |
---|---|
Element getRootElement | 获取根标签 |
List elements | 获取所有的二级标签 |
基本类型 getText() | 获取元素中的内容 |
Attribute attribute(String key) | 获取当前标签下指定名字的属性 |
案例 - 每个标签即是一个元素
1)读取xml文件 - SAXReader
#获取文档
public static void main(String[] args){
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("empList.xml")); //可以为文件流或文件
//获取根元素
Element root = doc.getRootElement();
//获取二级标签
List<Element> ele = root.elements("emp");
for(Element el : ele){
String name = el.elementText("name");
int age = Integer.parseInt(el.elementText("age"));
int id = Integet.parseInt(el.attributeValue("id"));
}
}
2)转换成xml文件 - XMLWriter
#生成一个doc文档
public static void main(String[] args){
Document doc = DocumentHelper.createDocument();
//添加一级标签
Element root = doc.addelement("list");
//添加二级标签
for(emp emp : list){
Element twoEle = root.addElement("emp").addAttribute("id",emp.getId()+"");
Element nameEle = twoEle.addElement("name").addText(emp.getName());
Element age = twoEle.addElement("age").addText(emp.getAge()+" ");
}
XMLWriter wri = new XMLWriter(new FileOutputStream("myemp.xml"),OutputFormat.createPrettyPrint());//后面的参数说明生成的是否漂亮,可有可无,自行参考
wri.write(doc);
wri.close();
}