问题描述
因为要实现联动,我想把对应Second放入数组,data放入集合,如何用pull实现解析?还是有更好的处理方式?<sms> <First typeName="生活祝福"> <Second typeName="生日"> <data>我谨代表国务院、党到来。</data> <data>嘿~~~务,感谢您的参与。谨祝您“生日快乐”。</data> </Second> <Second typeName="结婚"> <data>洋溢在喜悦的天堂,披着闪闪月光,堪叹:只羡鸳鸯不羡仙。</data> <data>今天,我带着喜乐意合爱不息;愿上帝祝福你们的爱比高天更高更长,你们的情比深海更深更广! </data> <data>婚姻所有的福,地里所藏的福,都赐给你们和你们的家庭!</data> </Second> <Second typeName="乔迁"> <data>蜜蜂一群可爱的小燕;蚂蚁挖了新洞,备了一仓过冬的粮食;你也搬新居了,一定能够赚取大把的钞票。</data> </Second> </First> <First typeName="西方节日"> <Second typeName="情人节"> <data>噢天,我没回家,你以为我去鬼混,别烦我,由于那时没有短信。所以我只好在一千年后告诉你,我去买花了。</data> <data>的脸;你在心里乐开了颜;短信字里行间充满了爱,老远处跑来,勾画出一对想你的红眼眼。</data> <data>离越远我的爱越浓。盼我们的情人节永远属于我们,愿我们的情人节永远快乐,愿我们情有所属。</data> </Second> <Second typeName="妇女节"> <data>人是一个宝库。但你比钻石和宝库更珍贵!你的节日里祝你永远青春美丽!</data> </Second></First><sms> 问题补充:timmyraynor 写道
解决方案
你可以使用DOM或者SAX解析,DOM是将整个XML读入内存然后进行解析,楼上所说的dom4j非常还用先用 document.getRootElement()取到根节点,然后用elementIterator()迭代出该元素的子节点,很简单的。SAX是基于事件模型的,他不是将XML全部读入内存,查看一下API,解析也不是很难。如果硬件资源比较充足,建议使用dom4j,相反的话使用SAX解析XML。望对您有帮助
解决方案二:
那就看你的需要了,因为你的每个data节点之间的关系是等价的,也就是说,从层次上应该是 Sms |_First |_data |_data ....这样的关系,所以,建议用数组一类的存储了
解决方案三:
用dom4j先获取根节点: Element root = document.getRootElment()//这个函数记不清了,反正就是从文件获取根然后获取根节点下的 First 和 Second然后每个节点中的数据取出来,都是String类,做个类型转换就好了
解决方案四:
解析XML可以用jDom或者dom4j