`
zeng1990
  • 浏览: 52227 次
  • 性别: Icon_minigender_1
  • 来自: 桂林
社区版块
存档分类
最新评论

使用DOM解析xml

阅读更多
解析xml的技术有很多中,本函数使用的是DOM技术,其中person类中有id,name,age三个属性。xml文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<persons>

	<person id="7">
		<name>shifu</name>
		<age>21</age>
	</person>
	
	<person id="20">
		<name>xiaobaozi</name>
		<age>21</age>
	</person>

	<person id="33">
		<name>xiaozeng</name>
		<age>22</age>
	</person>

</persons>

下面是对上面的xml文件进行解析的详细代码。当然,解析前要将xml文件写道输入流当中。
public List<Person> parser(InputStream inStream) throws Exception {
		
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder documentBuilder = factory.newDocumentBuilder();
		/* 对输入流进行解析 */
		Document document = documentBuilder.parse(inStream);
		
		/* 取得xml中以元素形式组成的文档树 */
		Element root = document.getDocumentElement();
		
		/* 取得以person为根元素的所有子元素的集合(包括person下的所有元素) */
		NodeList personNodes = root.getElementsByTagName("person");
		
		/* 存放解析出来的对象 */
		List<Person> persons = new ArrayList<Person>();
		for(int i = 0; i < personNodes.getLength(); ++i)
		{
			/* 取得person节点 */
			Element personNode = (Element) personNodes.item(i);
			Person person = new Person();
			/* 取得person节点的id属性的值并赋值给person对象 */
			person.setId(new Integer(personNode.getAttribute("id")));
			/* 取得person节点的所有子节点 */
			NodeList childNodes = personNode.getChildNodes();
			for(int k = 0; k < childNodes.getLength(); ++k)
			{
				/* 此处要注意,如果子元素是文本节点而不是元素节点,是不能转换成Element对象的
				 * 所以下面这句应当放到if语句里面,否则将会出现类型转换错误 
				 */
//				Element child = (Element) childNodes.item(k);
				/* 判断当前节点是否是元素节点 */
				if(childNodes.item(k).getNodeType() == Node.ELEMENT_NODE)
				{
					/* 是元素节点,可以转换 */
					Element child = (Element) childNodes.item(k);
					/* 该节点的名称是否是name或age,是则取得他们第一个子节点的文本的值赋值给person对象 */
					if("name".equals(child.getNodeName()))
					{
						person.setName(child.getFirstChild().getNodeValue());
					}
					else if("age".equals(child.getNodeName()))
					{
						person.setAge(new Short(child.getFirstChild().getNodeValue()));
					}
				}
			}
			/* 将生成的对象添加到persons集合中 */
			persons.add(person);
		}
		inStream.close();
		return persons;
	}
分享到:
评论

相关推荐

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

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

    android上使用DOM解析XML

    下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,因为DOM解析器是Java标准库的一部分,已经包含在Android SDK中。这意味着你可以...

    java使用dom解析xml

    Java 使用 DOM 解析 XML 是一种常见的处理 XML 文档的方式,DOM 即 Document Object Model,它是一种 W3C 标准的 API,用于处理 XML 和 HTML 文档。在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,...

    使用DOM解析XML.docx

    \n\n使用DOM解析XML的优势在于,它可以保证文档的语法和格式正确,并简化文档操作。DOM解析器可以读取和遍历整个文档,动态创建新的文档,以及修改和删除现有文档的内容。由于DOM提供了一致的接口,开发者可以编写与...

    java dom 解析 xml 实例

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

    Android Dom解析XML

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

    XML应用开发(软件品牌)-1期 第6单元 单元设计-使用DOM解析XML.doc

    《XML应用开发》课程主要关注的是使用DOM解析XML文档,这一单元主要分为两个部分:数据描述与操作(2课时)和访问DOM树节点(2课时),总共4个课时的教学内容,旨在帮助学生理解和掌握DOM解析XML的核心概念和技术。...

    DOM解析XML文件例子

    在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...

    使用DOM解析XML文档

    文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点

    XML应用开发(软件品牌)-1期 第6单元 单元测试卷答案-使用DOM解析XML文档.doc

    在单元六的学习中,主要关注了使用DOM解析XML文档的相关知识点: 1. **DOM解析**:DOM解析器将XML文档转化为内存中的对象模型,这个模型可以被JavaScript或其他编程语言访问。DOM解析器的主要任务是将XML文档结构...

    用dom解析xml文件

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

    经典的DOM解析XML范例

    在提供的代码示例中,展示了如何使用DOM解析XML文件`library.xml`。首先,通过`DocumentBuilderFactory`创建解析器,然后解析文件,得到`Document`对象。接着,获取根元素`books`,并通过`getChildNodes()`遍历所有...

    解析XML所需的jar dom.jar

    在Java中,使用DOM解析XML的基本步骤包括: 1. 加载XML文档:使用`javax.xml.parsers.DocumentBuilderFactory`类创建一个实例,并调用其`newDocumentBuilder()`方法生成`DocumentBuilder`对象。 2. 解析XML:使用`...

    DOM解析XML文档

    3. 应用程序接口:许多应用程序(如Web服务、桌面应用)使用DOM解析XML作为数据输入和输出的手段。 总之,DOM解析XML文档是编程中常用的技术,它提供了一种强大且灵活的方式来处理XML数据。理解和掌握DOM解析,对于...

    dom解析XML,普通解析

    DOM解析XML是处理XML数据的一种常见方式,尤其在Java编程中广泛使用。下面我们将深入探讨DOM解析XML的相关知识点。 1. DOM解析原理: DOM解析器读取整个XML文件,将其转换为内存中的对象树,每个XML元素、属性、...

    java_dom解析xml xml java

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

    dom解析xml BS结构

    总结起来,"dom解析xml BS结构"主要涉及到在浏览器环境中,使用DOM解析XML数据,通过JavaScript操作XML节点,实现数据的动态展示和交互。这要求开发者熟悉DOM API、XMLHttpRequest或fetch API,以及可能的XML与JSON...

    Dom方式解析XML

    在Android Studio中,我们经常使用DOM解析XML资源文件,如布局文件。例如,读取XML配置文件以获取应用程序设置: - 创建XML配置文件(如`config.xml`)放在`res/raw`目录下。 - 使用上述DOM解析方法读取并处理...

Global site tag (gtag.js) - Google Analytics