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、JDom
JDOM是一个开源项目,它基于树型结构,利用Java的技术对XML文档实现解析、生成、序列化以及多种操作,用Java的数据类型来定义操作数据树的各个节点。
JDOM下载
jdom-2.0.4.jar下载: http://www.jdom.org/downloads/
4.1、读取xml文件
public void readXML() throws JDOMException, IOException {
//1.获取JDom的解析器
SAXBuilder saxBuilder = new SAXBuilder();
//2.加载xml
Document document = saxBuilder.build(this.getClass().getClassLoader().getResourceAsStream("xml/languages" +
".xml"));
//3.获取根元素
Element rootElement = document.getRootElement();
System.out.println("根元素名称:"+rootElement.getName()+" 属性cat:"+rootElement.getAttributeValue
("cat"));
//4.获取根元素下的所有的子节点
List<Element> children = rootElement.getChildren();
for (int i = 0; i <children.size() ; i++) {
Element element = children.get(i);
System.out.println(element.getName()+" id:"+element.getAttribute("id").getValue());
List<Element> child = element.getChildren();
for (int j = 0; j < child.size(); j++) {
System.out.println(child.get(j).getName()+"="+child.get(j).getText());
}
}
}
4.2、创建xml文件
public void createXml() throws TransformerException, IOException {
//1.创建文档
Document document = new Document();
//2.添加跟节点
Element root = new Element("languages");
root.setAttribute("cat","it");
document.setRootElement(root);
//3.添加子节点
Element lang = new Element("lang");
lang.setAttribute("id","1");
Element name = new Element("name");
name.setText("Java");
Element ide = new Element("ide");
ide.setText("Eclipse");
lang.addContent(name);
lang.addContent(ide);
root.addContent(lang);
//输出
// TransformerFactory factory = TransformerFactory.newInstance();
// Transformer transformer = factory.newTransformer();
// transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
// transformer.setOutputProperty(OutputKeys.INDENT,"yes");
// transformer.transform(new JDOMSource(document),new StreamResult(new FileWriter("newxml" +
// ".xml")));
//输出
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");
XMLOutputter out = new XMLOutputter();
out.setFormat(format);
out.output(document,new FileWriter("newxml.xml"));
}