JAVA DOM解析XML文件过程详解

这篇文章主要介绍了JAVA DOM解析XML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

代码如下

import java.io.IOException;
import javax.xml.parsers.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Domtest {

  public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
    //创建一个DocumentBuilderFactory对象
    DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    //创建一个Doucumentbuild对象
    DocumentBuilder db=dbf.newDocumentBuilder();
    //解析对应的xml文件
    Document doc=db.parse("tes.xml");
    //根据标签名获取Node节点list
    NodeList nodelist=doc.getElementsByTagName("book");
    System.out.println("共有"+nodelist.getLength()+"本书");
    //遍历每一个book节点
    for(int i=0;i<nodelist.getLength();i++) {
      System.out.println("第"+i+"本书");
      //获取个book节点
      //使用Node类型获取book
      Node book=nodelist.item(i);
      System.out.println("Name: "+book.getNodeName()+" Value: "+book.getNodeValue()+" Type: "+book.getNodeType());
      //获取Node节点中的属性
      NamedNodeMap attrs= book.getAttributes();
      //遍历获取属性
      for(int j=0;j<attrs.getLength();j++) {
      Node x=attrs.item(j);
      //System.out.println(x.getNodeName()+" "+x.getNodeValue()+" "+x.getNodeType());
      }

      //使用Element对象获取节点
      Element node =(Element) nodelist.item(i);
      //使用Element对象下的getAttribute方法可以获取指定名字的属性值
      String id=node.getAttribute("id");
      System.out.println(id);
      String type=node.getAttribute("type");
      System.out.println(type);

      //使用Node节点下的getChildNode可以获取Nodelist数组,以此进行循环解析
      NodeList childnode=book.getChildNodes();
      for(int j=0;j<childnode.getLength();j++) {//getLength后会获取9个节点,因为text类型也算节点,一个<name>……</name>算一个节点,所以共有9个节点,而这些节点中,只有对象节点是我们需要的
        Node x=childnode.item(j);
        if(x.getNodeType()==Node.ELEMENT_NODE){//当节点类型为Element时,获取该节点
          //获取element类型的节点名
          System.out.println("节点"+j+"的名字:"+x.getNodeName()+" 值:/"+x.getLastChild().getNodeValue()+"/种类为"+x.getLastChild().getNodeType());//<name>xyz<name>,xyz属于<name>的子节点,使用getfirstChild或getLastNode效果相同
          System.out.println("节点"+j+"的名字:"+x.getNodeName()+" 值:/"+x.getTextContent()+"/种类为"+x.getNodeType());//getTextContent方法可以获取节点中所有的text内容 将<name>xyz</name>改为<name><a>123</a>xyz</name>,会获取到xyz123
        }
      }
    }
  }
}
//为了将获取到的xml文件中内容保存下来,可以将内容保存到对象数组中一次来存储数据
<?xml version="1.0" encoding="UTF-8" ?>
<Bookstore>
  <book id="1" type="text">
  <name>冰与火之歌</name>
  <author>乔治马丁</author>
  <year>2014</year>
  <price>80</price>
  </book>
<book id="2">
  <name>安徒生童话</name>
  <year>2004</year>
  <price>79</price>
  <language>English</language>
</book>
</Bookstore>

注意点

1 空白换行符也算节点,所以遍历节点时需要注意这些无用的节点会混在list中

2 text类节点返回Name值都是#text,而Element类节点返回value值都是null,需要注意

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java使用dom4j解析xml配置文件实现抽象工厂反射示例

    逻辑描述: 现在我们想在B层和D层加上接口层,并使用工厂.而我们可以将创建B和创建D看作是两个系列,然后就可以使用抽象工厂进行创建了. 配置文件:beans-config.xml.service-class与dao-class分别对应两个系列的产品.子菜单中id对应接口的命名空间,class对应实现类的命名空间. 复制代码 代码如下: [html] view plaincopyprint? <?xml version="1.0" encoding="UTF-8"

  • java使用xpath和dom4j解析xml

    1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种,一种叫SAX,另一种叫DOM.SAX是基于事件流的解析,DOM是基于XML文档树结构的解析.在此基础上,为了减少DOM.SAX的编码量,出现了JDOM,其优点是,20-80原则(帕累托法则),极大减少了代码量.通常情况下JDOM使用时满足要实现的功能简单,如解析.创建等要求.但在底层,JDOM还是使用SAX(最常用).DOM.Xanan文档.另外一种是DOM4J,是一个非常非常优秀的Java XML API,

  • java dom4j解析xml文件代码实例分享

    解析xml文件有两种方式,一种是利用Dom去解析,这种方式写起代码比较麻烦,对于刚入手的程序员来说比较容易出问题:第二种就是使用Dom4j包去解析在要使用Dom4j包的时候,肯定要先引入包 复制代码 代码如下: import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;import java.util.Iterator; import org.dom4j.Docum

  • Java使用Jdom读取xml解析实例

    本文实例讲述了Java使用Jdom读取xml解析.分享给大家供大家参考,具体如下: package com.yanek.demo.xml.test; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMExcep

  • java dom4j解析xml用到的几个方法

    1. 读取并解析XML文档: 复制代码 代码如下: SAXReader reader = new SAXReader(); Document document = reader.read(new File(fileName)); reader的read方法是重载的,可以从InputStream, File, Url等多种不同的源来读取.得到的Document对象就带表了整个XML. 读取的字符编码是按照XML文件头定义的编码来转换.如果遇到乱码问题,注意要把各处的编码名称保持一致即可. 2. 取

  • 在java中使用dom4j解析xml(示例代码)

    虽然Java中已经有了Dom和Sax这两种标准解析方式 但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心 为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具 鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作 Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了 首先我们需要出创建一个xml文档,然后才能对其解析 xml文档: 复制代码 代码如下: <?xml version="1.0" encoding=&quo

  • java中使用dom4j解析XML文件的方法教程

    前言 dom4j是一个java的XML api,性能优异.功能强大.易于使用.以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4j解析xml的具体操作.下面话不多说了,来一起看看详细的介绍吧 官网下载Dom4j地址:https://dom4j.github.io/ 注意:使用Dom4j开发,需下载dom4j相应的jar文件 题目:后台利用dom4j解析student.xml文件,并返回List<Stude

  • Java中使用DOM和SAX解析XML文件的方法示例

    dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP. dom4j的使用 下载了dom4j项目之后,解压缩,将其jar包(我的当前版本叫做dom4j-1.6.1.jar)加入class path下面. (Properties->Java Build Pa

  • JAVA DOM解析XML文件过程详解

    这篇文章主要介绍了JAVA DOM解析XML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 import java.io.IOException; import javax.xml.parsers.*; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.No

  • JS跨浏览器解析XML应用过程详解

    首先介绍简单的理论: 对于XML,我们可以理解它是一种树结构,它包含根,元素,属性,文本等内容.不同浏览器都有自己的解析器,把XML读入内存,并把它转换为可被 JavaScript 访问的 XML DOM 对象. 微软的 XML 解析器与其他浏览器中的解析器是有差异的.微软的解析器支持对 XML 文件和 XML 字符串(文本)的加载,而其他浏览器使用单独的解析器.不过,所有的解析器都含有遍历 XML 树.访问.插入及删除节点的函数. 如果你使用的是一个本地文件或者网络文件且该文件在是在本服务器,

  • python解析yaml文件过程详解

    YAML语法规则: http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/ 下载PyYAML: http://www.yaml.org/ 解压安装: python setup.py install 1.新建test.yaml文件,内容如下: name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - nam

  • spring框架配置实体类复杂属性注入xml文件过程详解

    spring框架是javaWeb项目中至关重要的一个框架,大多web 项目在工作层次上分为持久层.服务层.控制层.持久层(dao.mapper)用于连接数据库,完成项目与数据库中数据的传递:服务层(service)主要完成项目中各种业务(增.删.改.查),连接持久层.控制层,还和各种实体类打交道,而控制层主要和web前端页面打交道,与页面传递数据. 今天,主要介绍服务层的框架spring,也是各种整合框架最核心的框架.主要介绍spring中的一个小知识点,很难记的,那就是在spring框架对实体

  • java 中maven pom.xml文件教程详解

    maven pom.xml文件教程详解,具体内容如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.x

  • JavaScript处理解析JSON数据过程详解

    JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON的规则很简单: 对象是一个无序的"'名称/值'对"集合.一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"

  • python处理xml文件操作详解

    目录 1.python 操作xml的方式介绍 2.ElementTree模块 3.解析xml格式字符串并获取根节点 4.读取节点内容,getroot() 5.通标标签名直接获取标签(find,findall) 6.全文搜索标签名(类似xpath路径查找标签) 7.修改节点 8.删除节点 9.构建文件 方式1 (Element) 方式2 (makeelement) 方式3 1.python 操作xml的方式介绍 查看全部包含“三种⽅法: ⼀是xml.dom. * 模块,它是W3CDOMAPI的实现

  • Android开发之DOM解析xml文件的方法

    本文实例讲述了Android中DOM解析xml文件的方法.分享给大家供大家参考,具体如下: 一.在assets文件中写xml文件 <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>李明</name> <age>30</age> </person> <pe

  • Android编程创建与解析xml的常用方法详解

    本文实例讲述了Android编程创建与解析xml的常用方法.分享给大家供大家参考,具体如下: 今天我今天给大家讲解一下Android创建xml以及一些解析xml的常用方法. 首先是创建,我们用XmlSerializer这个类来创建一个xml文件,其次是解析xml文件,常用的有dom,sax,XmlPullParser等方法,由于sax代码有点复杂,本节只讲解一下dom与XmlPullParser解析,sax我将会在下一节单独讲解,至于几种解析xml的优缺点我就不再讲述了. 为了方便理解,我做了一

  • C++中TinyXML读取xml文件用法详解

    目录 前言 XML文件理解 常用的XML类方法使用 总结 前言 TinyXML下载地址:https://sourceforge.net/projects/tinyxml/ 官方文档:TinyXML TinyXML是个解析库,它由两个头文件(.h文件)和四个CPP文件(.cpp文件)构成,用的时候,只要将(tinyxml.h.tinystr.h.tinystr.cpp.tinyxml.cpp.tinyxmlerror.cpp.tinyxmlparser.cpp)导入工程就可以用它的东西了.如果需要

随机推荐