jaxp与dom4j遍历xml树
来源:互联网 发布:ssh端口 windows 编辑:程序博客网 时间:2024/04/29 02:27
1、jaxp遍历xml树
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.traversal.DocumentTraversal;
import org.w3c.dom.traversal.NodeFilter;
import org.w3c.dom.traversal.NodeIterator;
public class Main {
public static void main(String[] argv) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder loader = factory.newDocumentBuilder();
Document document = loader.parse("sample.xml");
DocumentTraversal traversal = (DocumentTraversal) document;
NodeIterator iterator = traversal.createNodeIterator(document.getDocumentElement(),
NodeFilter.SHOW_ELEMENT, null, true);
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
System.out.println("Element: " + ((Element) n).getTagName());
}
}
}
2、dom4j遍历xml树
Using Iterators
A document can be navigated using a variety of methods that return standard Java Iterators. For example
public void bar(Document document) throws DocumentException { Element root = document.getRootElement(); // iterate through child elements of root for ( Iterator i = root.elementIterator(); i.hasNext(); ) { Element element = (Element) i.next(); // do something } // iterate through child elements of root with element name "foo" for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) { Element foo = (Element) i.next(); // do something } // iterate through attributes of root for ( Iterator i = root.attributeIterator(); i.hasNext(); ) { Attribute attribute = (Attribute) i.next(); // do something } }
Fast Looping
If you ever have to walk a large XML document tree then for performance we recommend you use the fast looping method which avoids the cost of creating an Iterator object for each loop. For example
public void treeWalk(Document document) { treeWalk( document.getRootElement() ); } public void treeWalk(Element element) { for ( int i = 0, size = element.nodeCount(); i < size; i++ ) { Node node = element.node(i); if ( node instanceof Element ) { treeWalk( (Element) node ); } else { // do something.... } } }
Using Visitor Pattern
The visitor pattern has a recursive behavior and acts like SAX in the way that partial traversal is not possible. This means complete document or complete branch will be visited. You should carefully consider situations when you want to use Visitor pattern, but then it offers a powerful and elegant way of navigation. This document doesn't explain Vistor Pattern in depth, GoF98 covers more information.
import java.util.Iterator;import org.dom4j.Visitor;import org.dom4j.VisitorSupport;import org.dom4j.Document;import org.dom4j.Element;public class VisitorSample { public void demo(Document doc) { Visitor visitor = new VisitorSupport() { public void visit(Element element) { System.out.println( "Entity name: " + element.getName() + "text " + element.getText(); ); } }; doc.accept( visitor ); }}As you can see we used anonymous inner class to override the
VisitorSupport
callback adapter method visit(Element element) and the accept() method starts the visitor mechanism.Accessing XML content statically alone would not very special. Thus dom4j offers several methods for manipulation a documents content.
- jaxp与dom4j遍历xml树
- Dom,SAX,JAXP,DOM4J读写XML文件
- 利用JAXP和DOM4J解析XML
- Dom4J 遍历文件夹 产生xml目录树
- dom4j 遍历xml文件
- Dom4j遍历XML
- Dom4j遍历解析XML
- dom4j遍历解析xml
- dom4j遍历xml文件
- XML、Jaxp SAX解析、dom4j解析XML、XPath运用
- jaxp 和 dom4j 操作xml的代码演示
- XML解析【介绍、DOM、SAX详细说明、jaxp、dom4j、XPATH】
- Dom4j遍历解析XML测试
- Dom4j遍历解析XML测试
- Dom4j遍历解析XML测试
- 使用dom4j递归遍历xml
- 浅析SAX,DOM,JAXP,JDOM与DOM4J之间的关系
- 浅析SAX,DOM,JAXP,JDOM与DOM4J之间的关系
- 用有序链表实现集合
- Oracle存储过程入门
- JAVA获取当前年的第一天和最后一天
- 关于synchronized
- PHP如何获得flv视频缩略图和视频时间
- jaxp与dom4j遍历xml树
- Cairo 图形指南 (4) —— 裁剪与遮蔽
- Android 将View固定到地图上
- Height of CComboBox's drop down list
- 设置线程的亲缘性,多线程编程
- 基于IIS Express的.Net应用程序部署
- activeMQ-JMS备忘录
- Cairo 图形指南 (5) —— 图像
- Error opening /jsp/app/install/SelectApp.jsp