`
深海的鱼
  • 浏览: 13621 次
社区版块
存档分类
最新评论

如何解析String类型的xml文件

阅读更多

最近做项目的时候需要解析从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>&nbsp;</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>&nbsp;</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;
	}
              
 

 

分享到:
评论

相关推荐

    android SAX解析String类型 XML 字符串

    "SAX解析String类型XML字符串"就是一种高效且节省内存的方式去解析XML数据,特别是当XML文件较大时,SAX解析器优于DOM解析器,因为它不需要一次性加载整个XML到内存中。下面我们将深入探讨这一主题。 首先,XML...

    java 解析由String类型拼接的XML文件方法

    Java 解析由 String 类型拼接的 XML 文件方法 Java 解析由 String 类型拼接的 XML 文件方法是一种常用的数据解析方式。在实际开发中,我们经常需要解析 XML 文件来获取其中的数据。今天,我们将分享一篇 java 解析...

    PB 解析xml格式串

    2. **XML解析**:XML文档由元素、属性、文本等构成,解析XML时,我们需要读取这些元素并将其转换为内存中的数据结构。Python中可以使用`xml.etree.ElementTree`库进行解析,Java中可使用DOM或SAX解析器。 3. **XML...

    android 解析XML文件 生成XML文件

    本文将深入探讨如何使用SAX、DOM和Pull解析器解析XML文件,以及如何生成XML文件。我们将同时展示Java和Kotlin两种语言的实现方法。 一、SAX解析XML文件 SAX(Simple API for XML)是一种事件驱动的解析器,它不会一...

    pull解析特殊类型XML文件(Demo中是String-array)

    运用pull解析特殊类型的XML,Demo展示为解析Sring-array类型的数据 博客地址:https://blog.csdn.net/qq569699973 &lt;string-array name="jiangsu_array"&gt; 南京市 苏州市 无锡市 &lt;/string-array&gt; &lt;/resources&gt;

    DOM解析XML 创建XML

    其中,`xmlString`是XML文档的字符串形式,`text/xml`指定解析类型。 2. **访问XML节点**:加载XML文档后,我们可以通过DOM API访问和操作XML文档中的各个节点。每个节点都有自己的属性,如`nodeName`、`nodeValue...

    Android 解析xml文件

    1. **DOM解析器**:Document Object Model(DOM)解析器将整个XML文件加载到内存中,形成一个树形结构,便于对整个文档进行遍历。但是,对于大型XML文件,DOM解析器可能会消耗大量内存。 2. **SAX解析器**:Simple ...

    如何在FineReport中解析数据库内XML文件

    在帆软报表软件FineReport中处理存储于数据库字段中的XML文件,需要对XML数据进行解析,从而将数据转换为可用的报表数据源。XML数据通常以字符串形式存储在数据库表中的某字段内,这种数据结构要求使用者采用特定的...

    delphi解析xml文件实例

    本实例将详细探讨如何在Delphi 7中解析XML文件。 首先,我们需要引入必要的单元,如`Classes`和`XMLDoc`,它们包含了处理XML的基本类。`Classes`单元提供了基础的TStringList等类型,而`XMLDoc`单元则包含了...

    sax解析xml本地读取xml

    SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式对XML文档进行解析,而不是一次性加载整个文档到内存中,因此在处理大型XML文件时,SAX解析器具有较高的性能和较低的内存消耗。 标题“sax解析...

    C++解析xml文档或者xml字符串方法

    在C++中,可以使用MSXML库的`IXMLDOMDocument`接口来加载并解析XML文件。以下是一个示例: ```cpp #include using namespace MSXML2; void parseXMLFile() { IXMLDOMDocumentPtr xmldoc; HRESULT hr; hr = ...

    在android中使用pull解析xml文件

    解析XML文件主要通过循环调用`parser.next()`来推进解析过程,并根据返回的事件类型进行相应的处理。常见的事件类型有:START_DOCUMENT、START_TAG、END_TAG、TEXT等。 ```java int eventType = parser....

    android下的pull解析器解析和生成xml文件

    本篇将深入探讨Android下Pull解析器的使用,以及如何利用它来解析和生成XML文件。 一、Android Pull解析器简介 Pull解析器是基于事件驱动的解析模型,它不保留整个XML文档的内存映像,而是按需读取和处理XML元素。...

    如何用Document解析XML文件

    通过`getElementsByTagName`或`getChildNodes`方法,开发者可以轻松地访问和处理XML文档中的各个部分,实现了对XML文件的灵活解析。 #### 修改XML文档:DOMSource与StreamResult 除了解析,Java还提供了修改XML...

    c# 利用泛型解析xml文件

    通过这种方式,我们可以灵活地解析XML文件,并将数据转换为我们所需的任何类型,而无需为每种类型编写单独的解析代码。 总的来说,利用泛型解析XML文件是C#中一种高效且灵活的方法。它减少了重复的代码,提高了代码...

    通过xsd产生C#实体类解析XML或生成XML

    首先,我们需要一个XSD文件,它定义了XML文档的结构和数据类型。XSD文件使用元素、属性和约束来描述XML文档的结构。例如,一个简单的XSD可能定义了一个名为`Person`的元素,包含`Name`和`Age`两个子元素。 生成C#...

    解析xml的jar包

    - 大型XML文件解析可能消耗大量内存,考虑使用SAX解析或流式API。 - 对于频繁读取的小型XML片段,可使用缓存策略减少解析次数。 总之,JDOM为Java开发者提供了便利的XML处理工具,通过其丰富的API可以轻松地解析...

    java解析xml数据---sax解析器

    Java解析XML数据主要涉及到的是对XML文档的读取和处理,SAX(Simple API for XML)解析器是一种基于事件驱动的解析方式,适用于处理大型XML文件。与DOM(Document Object Model)解析器不同,SAX不需要一次性加载...

    Android解析xml(3)---Pull解析

    Pull解析器是一种事件驱动的解析方式,它允许应用程序在解析过程中按需获取XML数据,而不是一次性加载整个文档到内存,这使得处理大型XML文件时更为高效。 ### XML解析方式对比 在Android中,XML解析主要有三种...

    Android中使用pull解析器操作xml文件的解决办法

    在Android开发中,处理XML数据是一项常见的任务,而Android提供了内置的Pull解析器来高效地读取和生成XML文件。本文将详细介绍如何使用Pull解析器来操作XML。 首先,我们来理解什么是Pull解析器。Pull解析器是一种...

Global site tag (gtag.js) - Google Analytics