DOM解析XML文件是一次性将目标文件中的所有节点都读入,然后再进行后续操作的方式。
一般分为以下几步:
1.定义好目标XML文件路径path。
2.实例化DOM解析工厂对象,DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(),这种工厂类都不能用new的方式直接产生对象,必须用调用类的newInstance方法来产生对象。
3.用上面的工厂对象生成DOM解析器对象,DocumentBuilder builder = factory.newDocumentBuilder()。
4.用解析器对象对目标XML文件进行解析,得到Document文件对象,Document doc = builder.parse(path)。
5.处理Document文件,获得XML文件的所有信息。得到上面的doc对象也就相当于得到了树的根节点,就可以逐步对这可dom树进行遍历获得所有的节点信息,由于树的定义就是递归定义的,所以这里的遍历采用递归的思想最为简单。
代码如下:
首先是目标XML文件
<?xml version="1.0" encoding="utf-8"?> <student> <stu num="1111"> <name>张三丰</name> <sex>男</sex> <cla>武当</cla> </stu> <stu num="2345"> <name>小龙女</name> <sex>女</sex> <cla>古墓</cla> </stu> </student>
然后是解析的代码:
public class Domparse { //用来保存解析出来的学生对象的动态链表 static ArrayList<Student> list = new ArrayList<Student>(); static Student stu; public static void main(String[] args) throws Exception { String path = "D:\\xmlEX\\student2.xml"; //实例化一个用来产生DOM解析器的工厂对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //使用工厂得到一个DOM解析器对象 DocumentBuilder builder = factory.newDocumentBuilder(); //解析指定的xml文件或者数据流买得到DOM对象 Document doc = builder.parse(path); //通过DOM对象获得其中的数据,递归进行遍历 parseXML(doc); for(Student s:list){ System.out.println(s); } } /** * 递归解析XML文件 * @param doc */ public static void parseXML(Node doc){ //获得doc的所有子节点 NodeList nodes = doc.getChildNodes(); //遍历所有子节点 for(int i=0;i<nodes.getLength();i++){ Node node1 = nodes.item(i); //获得节点的名字 String str = node1.getNodeName(); //如果这个节点是一个元素节点 if(node1 instanceof Element){ //如果节点名字为stu则创建一个student对象存入队列,并且获得它的num属性 if(str.equals("stu")){ stu = new Student(); list.add(stu); //获得该元素节点的num属性 String num = ((Element)node1).getAttribute("num"); stu.num = Integer.parseInt(num); }else if(str.equals("name")){ stu.name = node1.getTextContent(); }else if(str.equals("sex")){ stu.sex = node1.getTextContent(); }else if(str.equals("cla")){ stu.cla = node1.getTextContent(); } } parseXML(node1); } } }
相关推荐
使用dom4j 和本地dom 解析xml 文件
android dom解析XMl文件,这是一个简单的小示例,希望对大家有所帮助
dom4j解析xml文件代码示例 dom4j解析xml文件代码示例 dom4j解析xml文件代码示例
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点
读取XML文件的四种方法,详细介绍了dom,jdom,dom4j,sax
功能:读取xml文件 参数:[in] xml文件路径 返回:true读取成功 false读取失败 **************************************/ bool ReadXml(CString sXmlPath /*xml文件路径*/); /*****************************...
此方法解析xml时,不受xml层级的限制。文件中包含了说明文档,java类,以及所使用到的*.jar。并对代码做了注释让你一目了然……
使用SAX DOM两种解析方式解析文件
使用DOM4j技术快速解析XML文件,提高开发效率
读取和解析xml文件
// 读取并解析XML文档 // SAXReader就是一个管道,用一个流的方式,把xml文件读出来 // // SAXReader reader = new SAXReader(); //User.hbm.xml表示你要解析的xml文档 // Document document = reader.read...
利用dom4j--读取xml文件。 代码简洁易懂。
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
XMLTest.java中创建XML和解析XML示例,另附dom4j资源包
Dom4j解析xml与配置文件的小例子,简单的Dom4j的小应用。
Java 解析XML性能分析Demo。包含了DOM解析,SAX解析, JDOM解析,DOM4J解析,JAXB解析例子。
使用dom4j对xml文档进行增删改. 查询就不用说了,使用elements(....)/element(...)/attributeValue()/getText()等方法
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API...这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。
基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。