java解析xml文件
2009-08-23 21:47
323 查看
用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API (Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器。
JAXP接口包含了三个包:
(1)org.w3c.dom W3C推荐的用于XML标准规划文档对象模型的接口。
(2)org.xml.sax 用于对XML进行语法分析的事件驱动的XML简单API(SAX)
(3)javax.xml.parsers解析器工厂工具,程序员获得并配置特殊的特殊语法分析器。
当然还有很多其他的解析xml的jar,只说sun提供的接口!
使用DOM解析XML文档
我们现在来看看DOM是如何解析XML的吧!同样的,我将从一个简单的不能再简单的例子来说明DOM是如何解析XML文档的,先让我们看看XML是什么内容吧:
解析这个XML文件的Java代码 :
JAXP接口包含了三个包:
(1)org.w3c.dom W3C推荐的用于XML标准规划文档对象模型的接口。
(2)org.xml.sax 用于对XML进行语法分析的事件驱动的XML简单API(SAX)
(3)javax.xml.parsers解析器工厂工具,程序员获得并配置特殊的特殊语法分析器。
当然还有很多其他的解析xml的jar,只说sun提供的接口!
使用DOM解析XML文档
我们现在来看看DOM是如何解析XML的吧!同样的,我将从一个简单的不能再简单的例子来说明DOM是如何解析XML文档的,先让我们看看XML是什么内容吧:
<?xml version="1.0" encoding="UTF-8"?> <books home="8242954" tel="13181805011" > <book email="123@990.net"> <name id="1">java</name> <price>102</price> </book> <book email="tian_bian_fei@163.com"> <name id="2">c++</name> <price>100</price> </book> </books> |
public static void main(String[] args) { // TODO Auto-generated method stub try { /* * DOM结点 DOM是一些节点的集合,由于文档中可能包含有不同类型的信息,所以定义了几种不同类型的节点。DOM中最常见的节点类型有: * (1)元素: 元素是XML的基本构件。元素的子节点可以是其它元素、文本节点或两者都有。元素节点还可以只含有属性这一唯一类型的节点。 * (2)属性:属性节点包含关于元素节点的信息,但它不是元素的子节点 (3)文本:文本节点文本信息,或干脆是空白的文本。 * (4)文档:文档节点是整个文档中所有其它节点的父节点 元素是一种很重要的类型节点,元素节点可以是其他节点的容器。 */ // 得到DOM解析器的工厂实例 DocumentBuilderFactory domfac = DocumentBuilderFactory .newInstance(); // 从DOM工厂获得DOM解析器 DocumentBuilder dombuilder = domfac.newDocumentBuilder(); // 把要解析的XML文档转化为输入流,以便DOM解析器解析它 InputStream is = new FileInputStream("bin/java.xml"); // 解析XML文档的输入流,得到一个Document Document doc = dombuilder.parse(is); // 得到XML文档的根节点(books) Element root = doc.getDocumentElement(); // 获得根节点的所有属性名和值 if (0 < root.getAttributes().getLength()) { System.out.println("根节点属性信息.........."); for (int a = 0; a < root.getAttributes().getLength(); a++) { System.out.println(root.getAttributes().item(a) .getNodeName() + ":" + root.getAttributes().item(a).getNodeName()); } } // 得到根节点的子节点 NodeList books = root.getChildNodes(); for (int i = 0; i < books.getLength(); i++) { Node book = books.item(i); // 判断是不是子节点 if (book.getNodeType() == Node.ELEMENT_NODE) { // 获得子节点的所有属性名和值 if (0 < book.getAttributes().getLength()) { System.out.println("第" + i + "个子节点属性信息.........."); for (int b = 0; b < book.getAttributes().getLength(); b++) { System.out.println(book.getAttributes().item(b) .getNodeName() + ":" + book.getAttributes().item(b) .getNodeValue()); } } //获得子节点的子节点 for (int j = 0; j < book.getChildNodes().getLength(); j++) { Node book1 = book.getChildNodes().item(j); //System.out.println(book.getChildNodes().item(j)); // 判断是不是子节点 if (book1.getNodeType()==Node.ELEMENT_NODE) { // 获得子节点的所有属性名和值 if (0 < book1.getAttributes().getLength()) { System.out.println(" 第" + i + "个子节点的第" + j + "子节点的属性信息.........."); for (int b1 = 0; b1 < book1.getAttributes() .getLength(); b1++) { System.out.println(book1.getAttributes() .item(b1).getNodeName() + ":" + book1.getAttributes().item(b1) .getNodeValue()); } } System.out.println(book1.getNodeName()+":"+book1.getFirstChild().getNodeValue()); } } } } } catch (Exception e) { e.printStackTrace(); } } |
相关文章推荐
- java解析xml文件
- Java中的XML文件解析
- Java解析XML文件的四种方法
- Java解析XML文件的两种方式详解
- javaXML文件解析(一) SAX解析
- Java读取WEB-INF下XML文件并进行解析
- java解析xml文件四种方式
- Java解析xml文件四种方式
- java 对xml文件的解析(转载)
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- Java如何解析某个目录下xml文件,将XML文件转换为报表数据源?
- java解析xml文件四种方式
- Java JSON、XML文件/字符串与Bean对象互转解析
- Java 实现解析xml文件的基本步骤(做笔记)
- Java解析Xml文件—判断Xml文件的节点是否存在子节点_以及对节点下不同子节点的内容解析方式
- JAVA解析XML文件
- Java解析XML文件的DOM和SAX方式
- 如何通过java代码解析xml文件
- java解析xml文件
- java解析xml文件并输出