xml 转 bean 的问题,求助。。。。。。

leewin27 2011-06-17 09:11:57
要转换的xml
<?xml version="1.0" encoding="UTF-8"?>
<User>
<Age>23</Age>
<NameList>
<name>name1</name>
<name>name2</name>
<name>name3</name>
<name>name4</name>
</NameList>
</User>


对应的 User 类


public class User {

private int age;

private List nameList;
}


请问:对于这样的xml转换成beanapachesimpleXml 该怎样实现呢? 谢谢!
...全文
216 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
leewin27 2012-05-14
  • 打赏
  • 举报
回复
用 XStream 解析的时候,别名有下划线是没有问题的。
xienianliang 2012-05-05
  • 打赏
  • 举报
回复
我用XSteam解析,但是他们的别名有下划线,与bean里面的字段名就不能匹配了。
xienianliang 2012-05-05
  • 打赏
  • 举报
回复
楼主 你这个问题怎么解决了 。我现在也是遇得到了xml转换bean的问题 。楼主你能把你解决的方法告诉我不,谢谢了!比较急
leewin27 2011-06-20
  • 打赏
  • 举报
回复
class="java.util.ArrayList" 怎么去掉? 对啊,这个怎么去掉? 我也不知道,呵呵! 是不是跟 @ElementArray 这个注解产生的 length 是一回事? 难道都不可以 去掉???

在 xml 转bean 的时候 用@ElementList 时,class="java.util.ArrayList" 这个可以 没有, 但是用@ElementArray 时, 那个 length 属性必须得有 太讨厌了。


对于XStream 的注解 弱在什么地方了呢?
leewin27 2011-06-17
  • 打赏
  • 举报
回复
首先谢谢 楼上的几位,用dom4j 也好 SAXReader 也好,jdk自带的也罢,想用他们来实现xml转换成bean 都得是先一个一个的把节点解析出来然后赋值,这样要解析很多的xml 效率很慢。而我用的 simpleXml 工具 可以 直接将 xml 转成bean 不用自己解析 xml。但是我现在是遇到 了 刚才提到的问题。再次感谢楼上的几位!
Gray_Sky 2011-06-17
  • 打赏
  • 举报
回复
其实就是解析xml文件,然后赋值给你的bean对象。

用什么解析方式得看你的具体需求
oO临时工Oo 2011-06-17
  • 打赏
  • 举报
回复
			File file= new File(xmlFileName);

DocumentBuilderFactory ch = DocumentBuilderFactory.newInstance();
DocumentBuilder db = ch.newDocumentBuilder() ;
Document dom = db.parse(file) ;
NodeList nl_sr = dom.getElementsByTagName("source-rightCode");


//。。。以下请参考JDK API
UPC_思念 2011-06-17
  • 打赏
  • 举报
回复
推荐用dom4j来解析xml,这个不难,更多信息请百度
leewin27 2011-06-17
  • 打赏
  • 举报
回复
神马现象?没人看吗????
huntor 2011-06-17
  • 打赏
  • 举报
回复
xstream 也有 annotation ,功能好像比api弱多了。

@XStreamAlias("Age")
private int age;
huntor 2011-06-17
  • 打赏
  • 举报
回复
simple-xml 的话

@ElementList(name="NameList",entry="name")
private List<String> nameList;


<User>
<Age>23</Age>
<NameList class="java.util.ArrayList">
<name>name1</name>
<name>name2</name>
<name>name3</name>
<name>name4</name>
</NameList>
</User>

class="java.util.ArrayList" 怎么去掉?
leewin27 2011-06-17
  • 打赏
  • 举报
回复
huntor 你好,用xstream 这个可以,我也在1.4 的工程里面用这个,但这个有个问题就是 在bean 和 xml 特别多的情况下,做别名映射 和 属性 映射 很不方便。现在有个工程的 1.5 下的,所以找到了 用 simpleXml,这个支持注解,用起来比较方便。但是对于这种情况,难道要在String 的类上面加个@Root(name="name") 这样的注解???
huntor 2011-06-17
  • 打赏
  • 举报
回复
最后一句的输出是
<User>
<Age>23</Age>
<NameList>
<name>name1</name>
<name>name2</name>
<name>name3</name>
<name>name4</name>
</NameList>
</User>
huntor 2011-06-17
  • 打赏
  • 举报
回复
import com.thoughtworks.xstream.*;
import com.google.common.io.*;
import com.google.common.base.*;
public class Main {
public static void main(final String[] args) throws Exception{
XStream xstream = new XStream();
xstream.alias("User",User.class);
xstream.aliasField("Age",User.class,"age");
xstream.aliasField("NameList",User.class,"nameList");
xstream.alias("name",String.class);

User user = (User)xstream.fromXML(Resources.toString(Resources.getResource(Main.class,"user.xml"),Charsets.UTF_8));
System.out.println(xstream.toXML(user));
}
}

user.xml 就是你上面那段xml,和 Main.class 放到同一个目录下。
依赖的库 xstream, google guava r09.
leewin27 2011-06-17
  • 打赏
  • 举报
回复
在线等。。。。。。。。。。。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧