解析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;
}
分享到:
相关推荐
使用DOM解析XML的基本步骤如下: 1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在代码中导入这些库: ```java import javax.xml.parsers....
下面将详细介绍在Android中使用DOM解析XML的基本步骤和关键知识点。 1. **导入XML解析库** 在Android项目中,我们不需要额外导入库,因为DOM解析器是Java标准库的一部分,已经包含在Android SDK中。这意味着你可以...
Java 使用 DOM 解析 XML 是一种常见的处理 XML 文档的方式,DOM 即 Document Object Model,它是一种 W3C 标准的 API,用于处理 XML 和 HTML 文档。在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,...
\n\n使用DOM解析XML的优势在于,它可以保证文档的语法和格式正确,并简化文档操作。DOM解析器可以读取和遍历整个文档,动态创建新的文档,以及修改和删除现有文档的内容。由于DOM提供了一致的接口,开发者可以编写与...
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...
《XML应用开发》课程主要关注的是使用DOM解析XML文档,这一单元主要分为两个部分:数据描述与操作(2课时)和访问DOM树节点(2课时),总共4个课时的教学内容,旨在帮助学生理解和掌握DOM解析XML的核心概念和技术。...
在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...
文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点
在单元六的学习中,主要关注了使用DOM解析XML文档的相关知识点: 1. **DOM解析**:DOM解析器将XML文档转化为内存中的对象模型,这个模型可以被JavaScript或其他编程语言访问。DOM解析器的主要任务是将XML文档结构...
使用DOM解析XML文件的步骤如下: 1. 加载XML文件:首先,你需要创建一个`DocumentBuilderFactory`对象,然后通过`newDocumentBuilder()`方法得到一个`DocumentBuilder`实例。接着,调用`parse()`方法,传入XML文件...
在提供的代码示例中,展示了如何使用DOM解析XML文件`library.xml`。首先,通过`DocumentBuilderFactory`创建解析器,然后解析文件,得到`Document`对象。接着,获取根元素`books`,并通过`getChildNodes()`遍历所有...
在Java中,使用DOM解析XML的基本步骤包括: 1. 加载XML文档:使用`javax.xml.parsers.DocumentBuilderFactory`类创建一个实例,并调用其`newDocumentBuilder()`方法生成`DocumentBuilder`对象。 2. 解析XML:使用`...
3. 应用程序接口:许多应用程序(如Web服务、桌面应用)使用DOM解析XML作为数据输入和输出的手段。 总之,DOM解析XML文档是编程中常用的技术,它提供了一种强大且灵活的方式来处理XML数据。理解和掌握DOM解析,对于...
DOM解析XML是处理XML数据的一种常见方式,尤其在Java编程中广泛使用。下面我们将深入探讨DOM解析XML的相关知识点。 1. DOM解析原理: DOM解析器读取整个XML文件,将其转换为内存中的对象树,每个XML元素、属性、...
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
总结起来,"dom解析xml BS结构"主要涉及到在浏览器环境中,使用DOM解析XML数据,通过JavaScript操作XML节点,实现数据的动态展示和交互。这要求开发者熟悉DOM API、XMLHttpRequest或fetch API,以及可能的XML与JSON...
在Android Studio中,我们经常使用DOM解析XML资源文件,如布局文件。例如,读取XML配置文件以获取应用程序设置: - 创建XML配置文件(如`config.xml`)放在`res/raw`目录下。 - 使用上述DOM解析方法读取并处理...