#学习笔记
#仅代表个人理解,缺漏之处望评论交流
dom4j解析xml文件
首先引入dom4j的依赖:
依赖的版本可以自己去替换。
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
我们需要xml文件加载进来,然后通过dom4j的SAXReader 对象从输入流中读取xml文件。
//创建文件输入流,获取xml文件输入流对象
FileInputStream fileInputStream = new FileInputStream("C:/Users/Desktop/demo1.xml");
//创建SAXReader对象
SAXReader reader = new SAXReader();
//获取Document 对象
Document document = reader.read(fileInputStream);
//获取Element 对象
Element rootElement = document.getRootElement();
Element 对象就是我们需要操作的对象了,这就是xml文件的根节点。比如下面这个xml文件结构。a标签就是xml文件的根节点,而b标签就是a标签的子标签,c是b的子标签。
<a class = “123”>
<b name = “456”></b>
<b name = “789”></b>
</a>
<a>
<b>
<c></c>
</b>
<c></c>
<b>
</b>
</a>
下面我们开始迭代这个rootElement对象:
Iterator it = rootElement.elementIterator();
while (it.hasNext()) {
Element element = (Element) it.next();
}
还以上面的xml文件为例,当我们迭代这个xml文件的时候,rootElement对象是根节点,所以迭代的时候会迭代两次,而这两次的结果就是这两个a标签。
如果我们要获取a标签的属性值,我们可以通过:
//获取a标签的calss属性对象
Attribute sheetAttribute = element.attribute("class");
//获取属性值
String classValeu = sheetAttribute.getValue();
如果我们要获取a标签的子节点b标签:
//获取当前标签的子标签
List<Element> elements = element.elements();
现在,我们就获取到a标签下的所有一级子标签了,我们可以通过循环遍历的方式来对子标签操作。获取属性,获取子标签,都是相同的操作方法。这样,我们就完成了对整个xml文件的操作了。