1、了解XML
1. XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。它和JSON都是一种数据交换格式。
作用:解析XML文档,创建XML文档。
2、什么是可扩展标记语言?
· 可扩展标记语言是一种很像超文本标记语言的标记语言。
· 它的设计宗旨是传输数据,而不是显示数据。
· 它的标签没有被预定义。您需要自行定义标签。
· 它被设计为具有自我描述性。
· 它是W3C的推荐标准。
3、解析XML文档的五种方式: 五种方法解析XML文档:Dom、SAX、JDOM、dom4j 、degister
准备xml文件
<?xml version="1.0" encoding="UTF-8"?>
<languages cat="it">
<lang id="1">
<name>Java</name>
<ide>Eclipse</ide>
</lang>
<lang id="2">
<name>Swift</name>
<ide>Xcode</ide>
</lang>
<lang id="3">
<name>c#</name>
<ide>Visual Studio</ide>
</lang>
</languages>
4、dom4j 、degister
dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。
4.1、读取xml文件
public void readXml() throws DocumentException {
//1.说去SAXReader对象
SAXReader reader = new SAXReader();
//2.获取Document对象
Document document = reader.read(this.getClass().getClassLoader().getResourceAsStream("xml/languages.xml"));
//3.获取根元素
Element rootElement = document.getRootElement();
System.out.println("根元素名称:"+rootElement.getName());
String cat = rootElement.attributeValue("cat");
System.out.println("属性为cat的值为:"+cat);
System.out.println("-------------------------");
//4.获取其下的子元素
List<Element> elements = rootElement.elements();
for (int i = 0; i < elements.size(); i++) {
Element element = elements.get(i);
System.out.println("第"+i+"个元素的名称:"+element.getName());
System.out.println("属性id为:"+element.attributeValue("id"));
List<Element> children = element.elements();
for (int j = 0; j < children.size(); j++) {
Element ele = children.get(j);
System.out.println(ele.getName()+"="+ele.getText());
}
System.out.println("-------------------------");
}
}
4.2、创建xml文件
public void createXml() throws IOException {
//1.获取文档
Document document = DocumentHelper.createDocument();
//2.创建跟节点
Element languages = DocumentHelper.createElement("languages");
languages.addAttribute("cat","it");
document.setRootElement(languages);
//3.添加子节点
Element lang = languages.addElement("lang");
lang.addAttribute("id","1");
Element name = lang.addElement("name");
name.setText("Java");
Element ide = lang.addElement("ide");
ide.setText("Eclipse");
//输出
//输出到控制台
XMLWriter writer = new XMLWriter();
writer.write(document);
//输出到文件
OutputFormat format = new OutputFormat(" ",true);
XMLWriter out = new XMLWriter(new FileOutputStream("newxml.xml"),format);
out.write(document);
}
digester
digester原来为struts中解析xml的方式,由于其比较好,被apache单独拿出变为一个小型框架。
其使用的原理为sax。