加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Xstream-xml和实体对象相互转换特殊问题

发布时间:2020-12-15 23:42:59 所属栏目:百科 来源:网络整理
导读:之前发了一篇博文《xml和实体对象相互转换 一步到位》,在项目实际应用过程中我遇到了这种xml格式: Xml代码 ? xml version = "1.0" encoding = "UTF-8" ? html body div id = "div1" name = "div" 123 / div form action = "saveForm.asp" method = "post"

之前发了一篇博文《xml和实体对象相互转换 一步到位》,在项目实际应用过程中我遇到了这种xml格式:

Xml代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <html>
  3. bodydivid="div1"name="div">123</divformaction="saveForm.asp"method="post"h1>请输入您的联系信息:lable>名字:pinputtype="submit"id="btn_sub"name="btn_sub"value="Submit"/>
  4. inputtype="reset"id="btn_res"name="btn_res"value="Reset"form>

原来我举例用的是以下xml文件:

两个xml的区别是:

<div id="div1" name="div"/>

<div id="div1" name="div">123</div>

针对<a b="">123</a>这种类型的问题解决方案是:见代码:

修改原来的HtmlDiv:加了字段value,然后注解加了@XStreamConverter(HtmlConverter.class),HtmlConverter这是自己实现了Xstream的Converter

Java代码
    @XStreamAlias("div")
  1. @XStreamConverter(HtmlConverter.class)
  2. publicclassHtmlDivimplementsBaseConverterBean{
  3. @XStreamAsAttribute
  4. privateStringid;
  5. privateStringname;
  6. privateStringvalue;
  7. publicStringgetId(){
  8. returnid;
  9. }
  10. voidsetId(Stringid){
  11. this.id=id;
  12. publicStringgetName(){
  13. returnname;
  14. voidsetName(Stringname){
  15. this.name=name;
  16. publicStringgetValue(){
  17. returnvalue;
  18. voidsetValue(Stringvalue){
  19. this.value=value;
  20. }


HtmlConverter:

classHtmlConverterimplementsConverter{
  • @Override
  • voidmarshal(Objectobj,HierarchicalStreamWriterwriter,MarshallingContextarg2){
  • HtmlDivdiv=(HtmlDiv)obj;
  • writer.setValue(div.getValue());
  • publicObjectunmarshal(HierarchicalStreamReaderreader,UnmarshallingContextarg1){
  • HtmlDivdiv=newHtmlDiv();
  • div.setValue(reader.getValue());
  • returndiv;
  • @SuppressWarnings("unchecked")
  • booleancanConvert(Classclazz){
  • returnclazz.equals(HtmlDiv.class);
  • 经测试这样就能取到value的值的。


    @XStreamConverter(value=ToAttributedValueConverter.class,strings{"fileName})
    publicstaticInputFileInfo{
    @XStreamAsAttribute
    privateStringtype;
    StringfileName;

    }
  • 同上自定义转换一样功能。

    http://crawler.iteye.com/blog/1672986

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读