`
yjshengshe
  • 浏览: 204580 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

dom解析xml实例一

    博客分类:
  • java
 
阅读更多

 解析xml并把xml中用户信息提取出来

 

1 test-b.xml文件

<?xml version="1.0" encoding="UTF-8"?>
	<result>
			<man>
				<name>sky</name>
				<age>25</age>
				<sex>男</sex>
				<demo>人皇</demo>
			</man>
			<man>
				<name>fly</name>
				<age>23</age>
				<sex>男</sex>
				<demo>中国小兽皇</demo>
			</man>
			<woman>
				<name>小仓美眉</name>
				<age>20</age>
				<sex>女</sex>
				<demo>魔兽女子第一人</demo>
			</woman>
			<woman>
				<name>doudou</name>
				<age>20</age>
				<sex>女</sex>
				<demo>美女主持啊</demo>
			</woman>
	</result>

 2 用户信息People类

package com.java.xml.dom;

	public class People {
		
		private String name;
		
		private String age;
		
		private String sex;
		
		private String demo;

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public String getAge() {
			return age;
		}

		public void setAge(String age) {
			this.age = age;
		}

		public String getSex() {
			return sex;
		}

		public void setSex(String sex) {
			this.sex = sex;
		}

		public String getDemo() {
			return demo;
		}

		public void setDemo(String demo) {
			this.demo = demo;
		}
	}

 3 java解析 执行方法DomB

package com.java.xml.dom;

	import java.io.File;
	import java.util.ArrayList;
	import java.util.List;

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

	import org.w3c.dom.Document;
	import org.w3c.dom.Node;
	import org.w3c.dom.NodeList;

	public class DomB {

		/**
		 * 根据节点属性给用户赋值
		 * @param node
		 * @param people
		 */
		public static void getUserPara(Node node,People people)
		{
			//节点名称
			String name = node.getNodeName();
			//节点值
			String value = node.getFirstChild().getNodeValue();
			
			if ("name".equals(name))
			{
				people.setName(value);
			}
			
			if ("age".equals(name))
			{
				people.setAge(value);
			}
			
			if ("sex".equals(name))
			{
				people.setSex(value);
			}
			
			if ("demo".equals(name))
			{
				people.setDemo(value);
			}
		}
		
		/**
		 * 输出到控制台
		 * @param i
		 * @param people
		 */
		public static void print(int i,People people)
		{
			StringBuffer sb = new StringBuffer(100);
			sb.append(i+1).append(":姓名 ").append(people.getName())
			.append(" 年龄 ").append(people.getAge()).append(" 性别 ")
			.append(people.getSex()).append(" 备注 ").append(people.getDemo());
			System.out.println(sb.toString());
		}
		/**
		 * dom解析"
		 */
		public static void dom()
		{
			try 
			{
				//用户对象集
				List<People> userList = new ArrayList<People>(16);
				
				File xml = new File("D:/新的开始/学习笔记/java学习/xml解析/test-b.xml");
				DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
				DocumentBuilder builder = factory.newDocumentBuilder();
				Document doc = builder.parse(xml);
				
				//doc根对象	
				Node root = doc.getDocumentElement();
				Node node1 = null;
				Node node2 = null;
				
				//根节点子对象集合
				NodeList list = root.getChildNodes();
				NodeList list1 = null;
				
				//开始解析处理xml节点,本来想写个灵活点的解析处理方法的
				//后来发现没有这个必要,所以下面的代码都是基于知道xml结构的情况下解析的。
				for (int i = 0; i < list.getLength(); i++)
				{
					//此处对象是man/woman对象
					node1 = list.item(i);
					
					//如果是对象节点继续处理,空白文本节点不住处理
					if (Node.ELEMENT_NODE == node1.getNodeType())
					{
						People people = new People();
						
						list1 = node1.getChildNodes();
						
						for (int j = 0; j < list1.getLength(); j++)
						{
							//此处对象是user属性对象,即name/age/sex/demo
							node2 = list1.item(j);
							
							//如果是对象节点继续处理,空白文本节点不住处理
							if (Node.ELEMENT_NODE == node2.getNodeType())
							{	
								//根据xml值给people对象注入属性
								getUserPara(node2,people);	
							}
						}
						
						//添加用户对象到集合中
						userList.add(people);
					}
				}
				
				
				People people = null;
				
				//控制台输p出
				for (int i = 0; i< userList.size(); i++)
				{
					people = userList.get(i);
					print(i,people);
				}
				
		
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		/**
		 * @param args
		 */
		public static void main(String[] args) {
			// TODO Auto-generated method stub
			dom();
		}

	}

 4 执行DomB对象的main方法,输出如下:

1:姓名 sky 年龄 25 性别 男 备注 人皇
2:姓名 fly 年龄 23 性别 男 备注 中国小兽皇
3:姓名 小仓美眉 年龄 20 性别 女 备注 魔兽女子第一人
4:姓名 doudou 年龄 20 性别 女 备注 美女主持啊
 
分享到:
评论

相关推荐

    java dom 解析 xml 实例

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

    DOM解析xml文件实例讲解

    本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...

    DOM解析XML应用实例(入门经典案例)

    本教程的“DOM解析XML应用实例(入门经典案例)”是一个理想的起点,涵盖了DOM解析的核心概念和操作,适合初学者通过实际操作来学习和掌握。在Myeclipse环境中运行,不仅可以加深理解,还能提高问题解决能力。

    DOM解析xml一个demo实例

    很实用的一个dom解析xml实例,很容易上手

    Android Dom解析XML

    总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...

    DOM解析XML文件实例

    以一个实例来说明DOM解析XML文件的方法与过程。

    dom4j解析xml实例

    **DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...

    DOM解析XML实例

    ### DOM解析XML实例详解 #### 一、DOM与XML解析概览 DOM(Document Object Model)是一种被广泛采用的标准,用于表示和操作XML文档。它提供了跨平台、跨语言的XML文档表示方式,使得开发人员能够以树状结构的形式...

    dom4j 解析xml实例

    在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...

    java_dom解析xml xml java

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

    JSP基于dom解析xml实例详解.docx

    本实例主要讲解如何在JSP中利用DOM解析XML文件,包括XML文件的读取、数据匹配以及数据写入。 首先,我们需要创建一个简单的User实体类,如`User`,包含姓名(name)、密码(pwd)和电子邮件(email)属性及相应的...

    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解析中的应用,特别...

    android Dom解析xml文件

    Android中的DOM解析XML文件是一种强大的工具,尤其适用于小型XML文件的处理。然而,对于大型XML文件,考虑到性能和内存消耗,可能需要考虑使用SAX或StAX等更高效的解析方式。在实际项目中,根据具体需求和资源限制...

    java平台中使用DOM解析xml文件

    使用DOM解析XML的基本步骤如下: 1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在代码中导入这些库: ```java import javax.xml.parsers....

    简单的sax和dom解析xml实例

    1. DOM解析的基本步骤: - 加载XML文件到内存,生成`Document`对象。 - 使用`Document`对象的方法(如`getElementsByTagName()`, `getElementById()`等)遍历和操作XML树。 2. Android中的DOM解析示例: ```java...

    用dom解析xml文件

    使用DOM解析XML文件的步骤如下: 1. 加载XML文件:首先,你需要创建一个`DocumentBuilderFactory`对象,然后通过`newDocumentBuilder()`方法得到一个`DocumentBuilder`实例。接着,调用`parse()`方法,传入XML文件...

    SAX解析XML文件实例

    SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析...当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml文件的实例

    经典的DOM解析XML范例

    【DOM解析XML】 ...总之,DOM解析XML是一种方便但内存占用较大的方法,适合处理小型XML文档或需要频繁查找和修改文档内容的场景。通过JAXP,开发者可以选择合适的解析策略,以适应不同的项目需求。

    java使用dom解析xml

    在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,形成一个树形结构,然后通过这个结构来访问和操作 XML 的各个部分。 首先,我们需要引入 Java 的核心解析库,即 javax.xml.parsers 命名空间。这个库...

Global site tag (gtag.js) - Google Analytics