XML概述
XML:可扩展标记语言,初衷是为了替代html语言,定义了很规范的格式,但是没有达到了最初的期望,后来人们利用这个特点用作于 配置文件 封装数据 文件传输。
与html主要区别:
xml区分大小写很敏感,html不区分
文档中有一个CDATA区,会按照纯文本解析
<?xml version="1.0" encoding="UTF-8"?>
<ConnectionAddress.xml>
<person1 id="i1">
<name>alice</name>
<phoneNumber class="c1">77--88-99</phoneNumber>
</person1>
<person2 id="i2">
<name>bob</name>
<phoneNumber class="c2">89--87-96</phoneNumber>
</person2>
<person3 id="i3">
<name>jack</name>
<phoneNumber class="c3">65--77--12</phoneNumber>
</person3>
</ConnectionAddress.xml>
dom4j的基本方法使用
//导入jar包
如图所示,选中jar包右键选中buildPath然后或出现“小奶瓶”
即配置成功
// 创建解析器对象
new SAXReader();
//读取写好的xml文件
SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream(
"ConnectionAddress"));
jar包中给我们提供了许多获取xml的方法
获取节点对象
Node node = doc.node(0);
只能获取一个子节点
获取所有的节点
Iterator iterator = doc.nodeIterator();
抽取方法获取所有的节点
getNodes(rootElement);
同理标签和属性一样都有类似方法
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class demo {
public static void main(String[] args) {
//导入jar包
// 创建解析器对象
SAXReader reader = new SAXReader();
try {
// 读取xml文件
Document doc = reader.read(new FileInputStream(
"ConnectionAddress"));
// 获取根标签
Element rootElement = doc.getRootElement();
// 获取所有标签并打印
List<Element> list = rootElement.elements();
for (Element e : list) {
System.out.println(e.getName());
}
Iterator<Element> iterator2 = rootElement.elementIterator();
while(iterator2.hasNext()){
Element element = iterator2.next();
System.out.println(element.getName());
}
System.out.println("------------");
// 获取标签属性
Attribute attribute = rootElement.element("person1").attribute(0);
System.out.println(attribute.getName()+":"+attribute.getValue());
//或者通过集合
List<Attribute> list2 = rootElement.attributes();
for(Attribute a:list2){
System.out.println(a.getName()+":"+a.getValue());
}
//迭代器
Iterator<Attribute> iterator = rootElement.attributeIterator();
while(iterator.hasNext()){
Attribute a2 = iterator.next();
System.out.println(a2.getName()+":"+a2.getValue());
}
//获取文本内容 getText() 或者 elementText()
String name1 = rootElement.element("person1").element("name").getText();
System.out.println(name1);
String name2 = rootElement.element("person2").elementText("name");
System.out.println(name2);
} catch (FileNotFoundException e) {
System.out.println("未找到文件");
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}