最近做项目的时候需要解析从WebService接口返回的xml文件,xml已经转化成了String类型,解析之后保存在一个List中。
比如,其中有个xml文件为:
<?xml version="1.0" encoding="UTF-8">
<root>
<lists>
<item>
<id><![CDATA[202]]]]>><![CDATA[</id>
<travel><![CDATA[ 南京一日游专业委员会]]]]>><![CDATA[</travel>
<cost><![CDATA[200元/人]]]]>><![CDATA[</cost>
<tel><![CDATA[4008859110]]]]>><![CDATA[</tel>
<imgurl><![CDATA[]]]]>><![CDATA[</imgurl>
<name><![CDATA[南京一日游]]]]>><![CDATA[</name>
</item>
<item>
<id><![CDATA[203]]]]>><![CDATA[</id>
<travel><![CDATA[ 南京一日游专业委员会]]]]>><![CDATA[</travel>
<cost><![CDATA[420元/人]]]]>><![CDATA[</cost>
<tel><![CDATA[4008859110]]]]>><![CDATA[</tel>
<imgurl><![CDATA[]]]]>><![CDATA[</imgurl>
<name><![CDATA[南京二日游]]]]>><![CDATA[</name>
</item>
<item>
<id><![CDATA[249]]]]>><![CDATA[</id>
<travel><![CDATA[ 南京春苗旅行社有限责任公司]]]]>><![CDATA[</travel>
<cost><![CDATA[成人68元/人 儿童60元/人]]]]>><![CDATA[</cost>
<tel><![CDATA[025-57010679]]]]>><![CDATA[</tel>
<imgurl><![CDATA[]]]]>><![CDATA[</imgurl>
<name><![CDATA[六合竹镇森林公园、大泉湖、农家乐、火山石柱林]]]]>><![CDATA[</name>
</item>
</lists>
</root>
那么获得的String类型的xml就是:
String xml = "<?xml version='1.0' encoding='UTF-8'?><root><name><![CDATA[常州恐龙园一日(一票制无自理)]]></name><cost><![CDATA[178元/成人]]></cost><tel><![CDATA[028-83196681]]></tel><travel><![CDATA[ 中青旅江苏国际旅行社有限公司]]></travel><detail><![CDATA[<span style='font-family:楷体_GB2312;font-size:9pt;'>常州现代旅游休闲区启动开发的一期工程,中华恐龙馆总面积<span>14000</span>平方米,穹顶最高处<span>36</span>米,龙首最高处达<span>71</span>米,以其宏大的空间和别具一格的建筑语言,成为常州旅游的标志性建筑。</span><p> </p>]]></detail></root>";
首先就是利用dom4j的DocumentHelper.parseText解析此String类型的xml,然后在遍历节点。
完整代码如下:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public List<LineInfo> getLine() throws DocumentException {
String xml = "<?xml version='1.0' encoding='UTF-8'?><root><name><![CDATA[常州恐龙园一日(一票制无自理)]]></name><cost><![CDATA[178元/成人]]></cost><tel><![CDATA[028-83196681]]></tel><travel><![CDATA[ 中青旅江苏国际旅行社有限公司]]></travel><detail><![CDATA[<span style='font-family:楷体_GB2312;font-size:9pt;'>常州现代旅游休闲区启动开发的一期工程,中华恐龙馆总面积<span>14000</span>平方米,穹顶最高处<span>36</span>米,龙首最高处达<span>71</span>米,以其宏大的空间和别具一格的建筑语言,成为常州旅游的标志性建筑。</span><p> </p>]]></detail></root>";
Document dom = DocumentHelper.parseText(xml);
//获取根节点root
Element root = dom.getRootElement();
List<LineInfo> list = new ArrayList<LineInfo>();
for(Iterator i = root.elementIterator(); i.hasNext();){
Element lists = (Element) i.next();
if(lists.getName().equals("lists")) {
Iterator iter = lists.elementIterator("item");
while(iter.hasNext()){
LineInfo line = new LineInfo();
Element a = (Element) iter.next();
String id = a.elementTextTrim("id");
line.setId(id);
String travel = a.elementTextTrim("travel");
line.setTravel(travel);
String cost = a.elementTextTrim("cost");
line.setCost(cost);
String tel = a.elementTextTrim("tel");
line.setTel(tel);
String imgurl = a.elementTextTrim("imgurl");
line.setImgurl(imgurl);
String name = a.elementTextTrim("name");
line.setLineName(name);
list.add(line);
}
}
}
return list;
}
分享到:
相关推荐
"SAX解析String类型XML字符串"就是一种高效且节省内存的方式去解析XML数据,特别是当XML文件较大时,SAX解析器优于DOM解析器,因为它不需要一次性加载整个XML到内存中。下面我们将深入探讨这一主题。 首先,XML...
Java 解析由 String 类型拼接的 XML 文件方法 Java 解析由 String 类型拼接的 XML 文件方法是一种常用的数据解析方式。在实际开发中,我们经常需要解析 XML 文件来获取其中的数据。今天,我们将分享一篇 java 解析...
2. **XML解析**:XML文档由元素、属性、文本等构成,解析XML时,我们需要读取这些元素并将其转换为内存中的数据结构。Python中可以使用`xml.etree.ElementTree`库进行解析,Java中可使用DOM或SAX解析器。 3. **XML...
本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...
运用pull解析特殊类型的XML,Demo展示为解析Sring-array类型的数据 博客地址:https://blog.csdn.net/qq569699973 <string-array name="jiangsu_array"> 南京市 苏州市 无锡市 </string-array> </resources>
在C++中,可以使用MSXML库的`IXMLDOMDocument`接口来加载并解析XML文件。以下是一个示例: ```cpp #include using namespace MSXML2; void parseXMLFile() { IXMLDOMDocumentPtr xmldoc; HRESULT hr; hr = ...
其中,`xmlString`是XML文档的字符串形式,`text/xml`指定解析类型。 2. **访问XML节点**:加载XML文档后,我们可以通过DOM API访问和操作XML文档中的各个节点。每个节点都有自己的属性,如`nodeName`、`nodeValue...
1. **DOM解析器**:Document Object Model(DOM)解析器将整个XML文件加载到内存中,形成一个树形结构,便于对整个文档进行遍历。但是,对于大型XML文件,DOM解析器可能会消耗大量内存。 2. **SAX解析器**:Simple ...
在帆软报表软件FineReport中处理存储于数据库字段中的XML文件,需要对XML数据进行解析,从而将数据转换为可用的报表数据源。XML数据通常以字符串形式存储在数据库表中的某字段内,这种数据结构要求使用者采用特定的...
本实例将详细探讨如何在Delphi 7中解析XML文件。 首先,我们需要引入必要的单元,如`Classes`和`XMLDoc`,它们包含了处理XML的基本类。`Classes`单元提供了基础的TStringList等类型,而`XMLDoc`单元则包含了...
SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式对XML文档进行解析,而不是一次性加载整个文档到内存中,因此在处理大型XML文件时,SAX解析器具有较高的性能和较低的内存消耗。 标题“sax解析...
解析XML文件主要通过循环调用`parser.next()`来推进解析过程,并根据返回的事件类型进行相应的处理。常见的事件类型有:START_DOCUMENT、START_TAG、END_TAG、TEXT等。 ```java int eventType = parser....
本篇将深入探讨Android下Pull解析器的使用,以及如何利用它来解析和生成XML文件。 一、Android Pull解析器简介 Pull解析器是基于事件驱动的解析模型,它不保留整个XML文档的内存映像,而是按需读取和处理XML元素。...
首先,我们需要一个XSD文件,它定义了XML文档的结构和数据类型。XSD文件使用元素、属性和约束来描述XML文档的结构。例如,一个简单的XSD可能定义了一个名为`Person`的元素,包含`Name`和`Age`两个子元素。 生成C#...
通过`getElementsByTagName`或`getChildNodes`方法,开发者可以轻松地访问和处理XML文档中的各个部分,实现了对XML文件的灵活解析。 #### 修改XML文档:DOMSource与StreamResult 除了解析,Java还提供了修改XML...
通过这种方式,我们可以灵活地解析XML文件,并将数据转换为我们所需的任何类型,而无需为每种类型编写单独的解析代码。 总的来说,利用泛型解析XML文件是C#中一种高效且灵活的方法。它减少了重复的代码,提高了代码...
- 大型XML文件解析可能消耗大量内存,考虑使用SAX解析或流式API。 - 对于频繁读取的小型XML片段,可使用缓存策略减少解析次数。 总之,JDOM为Java开发者提供了便利的XML处理工具,通过其丰富的API可以轻松地解析...
Java解析XML数据主要涉及到的是对XML文档的读取和处理,SAX(Simple API for XML)解析器是一种基于事件驱动的解析方式,适用于处理大型XML文件。与DOM(Document Object Model)解析器不同,SAX不需要一次性加载...
Pull解析器是一种事件驱动的解析方式,它允许应用程序在解析过程中按需获取XML数据,而不是一次性加载整个文档到内存,这使得处理大型XML文件时更为高效。 ### XML解析方式对比 在Android中,XML解析主要有三种...
在Android开发中,处理XML数据是一项常见的任务,而Android提供了内置的Pull解析器来高效地读取和生成XML文件。本文将详细介绍如何使用Pull解析器来操作XML。 首先,我们来理解什么是Pull解析器。Pull解析器是一种...