`
百合不是茶
  • 浏览: 354130 次
社区版块
存档分类
最新评论

XML的DOM解析技术

阅读更多

       dom解析xml,会一次性读入xml文件,会把文件中的所有元素,解析成一个个Node对象节点。dom解析是基于树和节点的文档,通过操作节点的相关方法,可以获取节点的属性,节点的内容,也可以获节点的子节点,如此便可以对xml文件进行解析。

     所以说dom解析便于操作,可以轻松完成增删改查,不过dom解析的文档不适合过大,由于它是将文档读入内存之中,过大的文件影响了机器性能,甚至容易导致内存溢出
    Node对象提供了很多常量,表示当前结点的类型,基于Node对象的操作会相对比较复杂,所以我们可以把Node转成其对应子类,子类里提供了很多便捷的方法去获取数据。如把Node类型的对象转成Element对象。
 XML文档内容;

 
解析思路;
1,创建工厂实例
2,创建工厂解析器
3,给定指定的xml文件
需要用到重要的方法;
getChildNodes()获取标签的元素
getTextContent获取标签元素的内容
getAttributes获取元素的属性
 
JAVA解析xml文档代码如下;
方法一:
package Dom解析;
/**
 * 设置对象的基本属性
 * @author Administrator
 *
 */
public class Student {
	String name;
	String sex;
	String cla;
	
	int no;
	int num;

}
 
解析代码类;
package Dom解析;

import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

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;

/**
 * DOM解析XML文档
 * @author Administrator
 * 
 */
public class DOMParse {
	// 创建队列保存对象
	private static ArrayList<Student> liststu = new ArrayList<Student>();
	// 设置对象
	static Student stu = null;

	public static void main(String[] args) throws Exception {

		String path = "C:\\Users\\Administrator\\Desktop\\xml\\student2.xml";

		// 1,实例化一个用来生产DOM解析器的工厂对象
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

		// 2使用工厂得到一个DOM解析器对象
		DocumentBuilder builder = factory.newDocumentBuilder();

		// 3,给定制定的xml文件
		Document doc = builder.parse(path);

		pausexml(doc);
		
		//遍历队列
		for (Student stu : liststu) {
			System.out.println(stu.name + " " + stu.no + " " + stu.num + " "
					+ stu.cla + " " + stu.sex);
		}
	}

	// 解析xml的方法
	public static void pausexml(Node node) {
		// 获得所有的子节点,得到所有子节点的节点队列
		NodeList list = node.getChildNodes();
		// 遍历队列,依次取出
		for (int i = 0; i < list.getLength(); i++) {
			Node node1 = list.item(i);
			// 遍历节点的名称和值
			String str = node1.getNodeName();
//		   System.out.println(val);
			
            //判断Node1是不是元素
			if (node1 instanceof Element) {
				if (str.equals("stu")) {
					//创建对象
					stu = new Student();
					//将创建的对象放到队列中
					liststu.add(stu);

					// 获得该节点元素的属性
					NamedNodeMap nnm = node1.getAttributes();
					// 遍历节点中的元素
					for (int j = 0; j < nnm.getLength(); j++) {
						Node nodelist = nnm.item(j);
						// 根据遍历出来的元素得到该节点元素属性的名字和值
						String name = nodelist.getNodeName();
						String value = nodelist.getNodeValue();
						// System.out.println(name +"<<<>>>>"+value);
						if (name.equals("no")) {
							//如果是no就转化为int型
							stu.no = Integer.parseInt(value);
						}
						if (name.equals("num")) {
							stu.num = Integer.parseInt(value);
						}
					}
				}
				if (str.equals("name")) {
					stu.name = node1.getTextContent();
					
				}
				if (str.equals("sex")) {
					// 如果标签是sex
					stu.sex = node1.getTextContent();
					// System.out.println(sex + ">>>>>>>>>>>>>>>>>>>>");
				}
				if (str.equals("cla")) {
					stu.cla = node1.getTextContent();
					// System.out.println(cla + "<<<<<<<<<<<<<<<");
				}
			}

			pausexml(node1);
		}

	}

}
运行结果:
张三丰 1234 1111 武当 男
小龙女 2345 0 古墓 女
 
 
 
解析方法二:
package Dom解析;

import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

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;

/**
 * DOM解析XML文档
 * 
 * @author Administrator
 * 
 */
public class ReadDOMParse {

	public static void main(String[] args) throws Exception {

		String path = "C:\\Users\\Administrator\\Desktop\\xml\\student2.xml";

		// 1.实例化工厂
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 2,创建工厂实例
		DocumentBuilder builder = factory.newDocumentBuilder();
		// 3,解析
		Document doc = builder.parse(path);
		
		//获取元素的名称并返回
		NodeList nodelist =  doc.getElementsByTagName("stu");
		//遍历队列
		for(int i = 0;i<nodelist.getLength();i++){
			// 输出名字
			System.out.println("name:"
					+ doc.getElementsByTagName("name").item(i).getFirstChild()
							.getNodeValue());
		
			// 输出性别
			System.out.println("sex:"
					+ doc.getElementsByTagName("sex").item(i).getFirstChild()
							.getNodeValue());
			
			// 输出班级
			System.out.println("cla:"
					+ doc.getElementsByTagName("cla").item(i).getFirstChild()
							.getNodeValue());

		
		}
	}

}
 运行结果;
name:张三丰
sex:男
cla:武当
name:小龙女
sex:女
cla:古墓
  • 大小: 8.3 KB
0
0
分享到:
评论

相关推荐

    Oracle xmldom解析xml入参

    完整的Oracle xmldom解析xml入参,经过测试,可以解析,成功入到数据表中。

    Asp xmldom解析XML

    XMLDOM提供了一种标准的方式来解析、修改和操作XML数据,它遵循W3C DOM规范。在这个示例中,我们将深入探讨如何在ASP中使用XMLDOM对象解析XML文件。 首先,我们需要了解XMLDOM的主要组成部分。XMLDOM主要包括以下几...

    易语言模块 XMLDOM 解析 构造 获取 更改 添加 删除 遍历元素 格式化XML

    示例源码: ...什么是 XML DOM? XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准编程接口 中立于平台和语言 W3C 标准 XML DOM 定义了所有 XML 元素...5、XMLDOM教程文档推荐参考:https://www.w3cschool.cn/xmldom

    XMLDOM解析器

    在C#中,XML DOM解析器主要通过`System.Xml`命名空间中的类来实现,如`XmlDocument`、`XmlNode`等。下面我们将深入探讨这些知识点: 1. **XMLDocument类**:这是DOM解析的核心,它代表整个XML文档。你可以使用`Xml...

    Android Dom解析XML

    DOM解析方式允许开发者一次性加载整个XML文档到内存中,形成一个树形结构,便于遍历和操作。尽管对于大型XML文件,DOM解析可能因消耗大量内存而效率低下,但在处理小型XML文件时,DOM方法具有简洁和方便的优点。 ...

    android Dom解析xml文件

    DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML内容。本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的...

    xmldom4j解析

    DOM解析会将整个XML文档加载到内存中形成一棵树形结构,方便访问任意节点,但内存消耗大;SAX解析则采用事件驱动,逐行读取XML,适合处理大型文档,但不支持随机访问。 三、DOM4J解析XML 1. 创建Document对象:使用...

    IE下使用XML DOM解析XML文件(ASP.NET Web)

    总结,IE下的XML DOM解析涉及使用ActiveXObject创建DOM对象,加载XML文件,然后通过DOM API遍历和操作XML结构。在ASP.NET Web环境中,通常需要结合服务器端和客户端代码协同工作,确保数据的正确传输和解析。理解并...

    DOM解析XML 创建XML

    下面我们将深入探讨DOM解析XML以及如何创建XML。 DOM解析XML的过程分为以下几个步骤: 1. **加载XML文档**:首先,我们需要通过DOM解析器加载XML文档。在JavaScript中,可以使用`DOMParser`对象的`parseFromString...

    FireFox下用XML DOM解析XML文档(ASP.NET Web)

    本文将详细讲解如何在Firefox下利用XML DOM解析XML文档。 首先,理解XML DOM的概念是至关重要的。XML DOM是一种W3C标准,它定义了一个统一的、平台和语言无关的接口,允许程序和脚本动态地访问和更新XML文档的结构...

    XML解析技术DOM4J解析

    ### XML解析技术DOM4J解析 #### DOM4J解析概览 DOM4J是一种高性能、功能强大且极其易于使用的Java XML API,它最初是作为JDOM的一个智能分支发展起来的,自2000年下半年开始持续开发。DOM4J不仅在功能上超越了基本...

    DOM解析XML文件例子

    总结来说,DOM解析XML文件是一种常见的数据处理技术,通过构建内存中的DOM树,能够方便地对XML文档进行查询、修改和操作。在JavaScript中,DOMParser是实现这一功能的关键工具。理解DOM解析的基本原理和方法,将有助...

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    DOM解析xml文件实例讲解

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于Web应用程序、配置文件以及数据交换等领域...在实际编码过程中,结合具体的业务场景和XML文件大小,开发者应权衡利弊,选择最适宜的解析技术。

    xmldom.zip

    这个问题的出现主要是因为Egret引擎默认不包含XML解析的支持,因此需要额外引入XMLDOM库来解决。本文将深入探讨如何处理这个情况,以及XMLDOM在Egret中的应用。 XML(Extensible Markup Language)是一种用于存储和...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...

    java dom 解析 xml 实例

    Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

Global site tag (gtag.js) - Google Analytics