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

如何解析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;
	}
              
 

 

分享到:
评论

相关推荐

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

    今天小编就为大家分享一篇java 解析由String类型拼接的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;

    java实现利用String类的简单方法读取xml文件中某个标签中的内容

    下面小编就为大家带来一篇java实现利用String类的简单方法读取xml文件中某个标签中的内容。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    跨平台解析XML文件 XmlNode V1.01测试版

    #define XML_OBJECT_TYPE_DOCUMENT 0x01 //节点类型为文档,即为xml根节点,用于记录文件路径 #define XML_OBJECT_TYPE_DECLARATION 0x02 //节点类型为描述内容 ?&gt; #define XML_OBJECT_TYPE_ATTRIBUTE 0x03 //节点...

    解析xml存储到文本中

    解析String类型的xml,可以存储到.txt格式的文本中去。还有一个就是可以不用存文档的解析,很实用的资源。

    xml入门教程/xml入门教程

    2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。xml是大小写 敏感的,只能以字母或下划线开头。 字符转义 &lt; 代表 ", &gt; 代表 "&gt;" , &...

    XML的生成与解析

    如何将String类型的XML文件解析获得所需的数据

    C# xml多个同名节点操作

    方便对xml中任意节(多个同名节点)点属性进行获取、设置。... public bool SetNodeValueByIndex(XmlDocument xmlContent, string parentNode, int index,string sonNode,string grandSonNode, string valueStr)

    xml2map:XML到MAP转换器的Golang编写

    xml2map XML到MAP转换器的Golang编写的转换器 ...例如,map [string] interface {}可以用作模板生成中的通用类型。 Golang“文本/模板”等 入门 1.安装 go get -u github.com/sbabiv/xml2map 或者,

    Tinyxml 源代码(VC6 & VS2005)

    TinyXML不解析不使用DTDs(文档类型定义)或者XSLs(可扩展样式表语言)。有其它解析器(到www.sourceforge.org搜索一下XML)具有更加全面的特性,但它们也就更大,需要花更长的时间来建立你的项目,有更陡的学习...

    二进制XML存储方案

    · 暂时只实现了string/long/byte[],还没有提供其它类型的解析与转换; · XML标签不支持属性,只支持子元素:) · 是不是可以提供一个oxm模型,完成BinXML与Object之间的直接映射,现在这个映射工作还是人工...

    JavaXML解析器FastXml.zip

    FastXml类似XMLPULL一样,不校验文档schema和DTD,对文档的格式也不进行非常严格的校验:通常xml文档的格式都是正确的,当我们追求xml解析的最高性能时,就不需要对格式等内容进行及其严格的校验了。FastXml并不...

    android xml文件操作

    xml文件操作 public class XmlUtils { /** * 获取Document对象。根据xml文件的名字获取Document对象。 * * @param file * 要获取对象的xml文件全路径。 * @return 返回获取到的Document对象。 * @...

    day023-xml解析笔记和代码.rar

    由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便, 结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 /a/b/c: 表示一层...

    DWR.xml配置文件说明书(含源码)

    String类型和Date同样预先定义了Converter,这些converter都没有办法进行改变的,所有的String,Date和数值类型都统一采用默认的converter. 2.1 Array Converters Array的配置项目没有上面介绍的那么直观,默认情况下DWR...

    XML 讲解和分析

    XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。 编辑本段简明语法  SGML常用来定义针对HTML的文档类型定义(DTD)...

    SaxParse.rar

    kotlin使用SAX解析String类型的xml文件,xml格式不正确,比如多了空格或者缺少/都会抛出异常

    python处理xml文件的方法小结

    本文实例讲述了python处理xml文件的方法。分享给大家供大家参考,具体如下: ...其中sys:String为节点名字,x:Key的内容为Attribute,xml节点值为sys:String的子节点,它是文本节点类型。&lt;节点名称 x:Key=”Att

    C#对XML文件的各种操作实现方法

    任何XML文档对任何类型的应用以及正确的解析都必须是良构的(well-formed),即每一个打开的标签都必须有匹配的结束标签,不得含有次序颠倒的标签,并且在语句构成上应符合技术规范的要求。XML文档可以是有效的...

    Android-simple-XML-Parser:用于从 Android XML 布局文件中提取视图 ID 的简单类

    方法getElementIds()接受两个参数:要解析的布局文件的资源 ID,以及作为请求的 View 类型名称的String 。 许多视图类型名称被定义为类常量。 该方法返回一个int Array 对象,该对象包含文件中请求类型的所有视图的...

Global site tag (gtag.js) - Google Analytics