XML基础之DOM4j解析(二)

前端之家收集整理的这篇文章主要介绍了XML基础之DOM4j解析(二)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上一篇讲了XML基本规则,现在讲讲XML的解析
1. DOM4J概述
1.1 什么是DOM4J
Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。
使用Dom4j开发,需下载dom4j相应的jar文件

Dom4j的官方网站:http://sourceforge.net/projects/dom4j/

1.2 搭建Dom4j的开发环境
添加Dom4j的jar包即可:dom4j-1.6.1.jar

使用时注意要导入org.dom4j.*中的类。


2. 使用DOM4J读取XML文件
2.1 读取XML文档的方式

/**
  * 获取document
  * @return document
  */
 public static Document GetDocument(){
  Document document = null;
  //方法一:
  //1.读取XML文件,获得document对象
  SAXReader saxReader = new SAXReader();
  try {
   document = saxReader.read(new File("D:\\person.xml"));
  } catch (DocumentException e) {
   e.printStackTrace();
  }
  /*//方法二:解析XML形式的文本,得到document对象
  String xmlText="<person></person>";
  try {
   document = DocumentHelper.parseText(xmlText);
  } catch (DocumentException e) {
   e.printStackTrace();
  }*/
  return document;
 }



2.2遍历所有元素

public static void testRead() throws Exception {
  // 读入XML文件,并获取document
  Document document = GetDocument();
  // 获取根节点
  Element element = document.getRootElement();
  // 从根节点开始,遍历所有的节点(Element是Node的子接口)
  traverse(element);
 }

 // 遍历所有元素的递归方法
 public static void traverse(Element element) {
  //获取所以元素的迭代器
  Iterator<Element> iter = element.elementIterator();
  while(iter.hasNext()){
   Element e = iter.next();
   System.out.println(e);
   traverse(e);
  }
 }



2.3 查找元素

            /**
  * 查找元素
  * @param elementName 要查找的元素名称
  * @return 返回查找到的元素,null表示没查找到
  */
 public static Element findElement(String elementName) {
  // 读入XML文件,并获取document
  Document document = GetDocument();
  // 获取根节点
  Element rootElement = document.getRootElement();
  //用来存储查找到的元素
  Element myElement = null;
  Iterator<Element> iter = rootElement.elementIterator();
  
  while(iter.hasNext()){
   Element ele = iter.next();
   //查找到就赋值给myElement
   if(ele.getName().equals(elementName)){
    myElement = ele;
   }
  }
  return myElement;
  
 }



说明:就可以按照这种方式查找指定特征的元素或是属性


2.4 获取一个元素的信息
2.4.1 基本信息

 /**
  * 获取元素的基本信息
  * @param element表示要获取信息的元素
  */
 public static void getElementInfo(Element element){
  // 获取元素的名称(如果是标签,则是标签名;如果是属性,则是属性名)
  String name = element.getName();

  // 获取元素包含的文本内容(只是指这个标签体中的文本,如果只有子标签,则此值为空字符串)
  String text = element.getText();

  // 获取元素包含的所有文本(标签体中的文本,也包含子孙标签的文本内容)
  String stringValue = element.getStringValue();

  // 获取这个元素的XML源码
  String xml = element.asXML();

 }


2.4.2 与子元素有关的

/**
  * 关于获取子元素
  * @param parentElement 父元素
  */
 public static void childElement(Element parentElement){
  // 获取此元素的所包含的所有节点的数量
  int nodeCount = parentElement.nodeCount();

  // 获取此元素所包含的所有子节点的迭代器,包含标签、注释、文本等元素
  Iterator<Node> nodeIter = parentElement.nodeIterator();
  while(nodeIter.hasNext()){
   Node node = nodeIter.next();
   System.out.println(node.getName());
  }
  // 获取此元素的所有子标签的迭代器,只有标签元素,不包含注释与文本元素(迭代器、List集合)
  //1.迭代器
  Iterator<Element> elementIter = parentElement.elementIterator();
  
  //2.list集合 二选一
  List<Element> elementList = parentElement.elements();

 }


2.4.3 与属性有关的


 /**
  * 获取元素属性
  * @param element 元素
  */
 public static void getAttribute(Element element){
  //方法一:
  // 获取此元素的属性数量
  int attrCount = element.attributeCount();
  for(int i=0;i<attrCount;i++){
   element.attribute(i);
  }
  // 获取此元素的所有属性(迭代器、List集合)
  //方法二:
  Iterator<Attribute> attrIter = element.attributeIterator();
  //方法三:
  List<Attribute> attrList = element.attributes();

 }
原文链接:https://www.f2er.com/xml/300071.html

猜你在找的XML相关文章