最近做项目的时候需要解析从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;
}
分享到:
相关推荐
今天小编就为大家分享一篇java 解析由String类型拼接的XML文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
运用pull解析特殊类型的XML,Demo展示为解析Sring-array类型的数据 博客地址:https://blog.csdn.net/qq569699973 <string-array name="jiangsu_array"> 南京市 苏州市 无锡市 </string-array> </resources>
下面小编就为大家带来一篇java实现利用String类的简单方法读取xml文件中某个标签中的内容。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
#define XML_OBJECT_TYPE_DOCUMENT 0x01 //节点类型为文档,即为xml根节点,用于记录文件路径 #define XML_OBJECT_TYPE_DECLARATION 0x02 //节点类型为描述内容 ?> #define XML_OBJECT_TYPE_ATTRIBUTE 0x03 //节点...
解析String类型的xml,可以存储到.txt格式的文本中去。还有一个就是可以不用存文档的解析,很实用的资源。
2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。xml是大小写 敏感的,只能以字母或下划线开头。 字符转义 < 代表 ", > 代表 ">" , &...
如何将String类型的XML文件解析获得所需的数据
方便对xml中任意节(多个同名节点)点属性进行获取、设置。... public bool SetNodeValueByIndex(XmlDocument xmlContent, string parentNode, int index,string sonNode,string grandSonNode, string valueStr)
xml2map XML到MAP转换器的Golang编写的转换器 ...例如,map [string] interface {}可以用作模板生成中的通用类型。 Golang“文本/模板”等 入门 1.安装 go get -u github.com/sbabiv/xml2map 或者,
TinyXML不解析不使用DTDs(文档类型定义)或者XSLs(可扩展样式表语言)。有其它解析器(到www.sourceforge.org搜索一下XML)具有更加全面的特性,但它们也就更大,需要花更长的时间来建立你的项目,有更陡的学习...
· 暂时只实现了string/long/byte[],还没有提供其它类型的解析与转换; · XML标签不支持属性,只支持子元素:) · 是不是可以提供一个oxm模型,完成BinXML与Object之间的直接映射,现在这个映射工作还是人工...
FastXml类似XMLPULL一样,不校验文档schema和DTD,对文档的格式也不进行非常严格的校验:通常xml文档的格式都是正确的,当我们追求xml解析的最高性能时,就不需要对格式等内容进行及其严格的校验了。FastXml并不...
xml文件操作 public class XmlUtils { /** * 获取Document对象。根据xml文件的名字获取Document对象。 * * @param file * 要获取对象的xml文件全路径。 * @return 返回获取到的Document对象。 * @...
由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便, 结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 /a/b/c: 表示一层...
String类型和Date同样预先定义了Converter,这些converter都没有办法进行改变的,所有的String,Date和数值类型都统一采用默认的converter. 2.1 Array Converters Array的配置项目没有上面介绍的那么直观,默认情况下DWR...
XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。 编辑本段简明语法 SGML常用来定义针对HTML的文档类型定义(DTD)...
kotlin使用SAX解析String类型的xml文件,xml格式不正确,比如多了空格或者缺少/都会抛出异常
本文实例讲述了python处理xml文件的方法。分享给大家供大家参考,具体如下: ...其中sys:String为节点名字,x:Key的内容为Attribute,xml节点值为sys:String的子节点,它是文本节点类型。<节点名称 x:Key=”Att
任何XML文档对任何类型的应用以及正确的解析都必须是良构的(well-formed),即每一个打开的标签都必须有匹配的结束标签,不得含有次序颠倒的标签,并且在语句构成上应符合技术规范的要求。XML文档可以是有效的...
方法getElementIds()接受两个参数:要解析的布局文件的资源 ID,以及作为请求的 View 类型名称的String 。 许多视图类型名称被定义为类常量。 该方法返回一个int Array 对象,该对象包含文件中请求类型的所有视图的...