kusedexingfu 2022-07-05 11:12 采纳率: 25%
浏览 114
已结题

XStream转xml如何去掉list的a标签

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import lombok.Data;

import javax.xml.bind.annotation.XmlRootElement;
import java.util.Arrays;
import java.util.List;
public class ListStrTest2 {

    public static void main(String[] args) {
        Request request = new Request();
        request.setId(1L);
        request.setStreetLines(Arrays.asList("line1","line2"));


        System.out.println(request.toXmlString());
    }

    @Data
    @XmlRootElement()
    @XStreamAlias("Request")
    public static class Request {
        private Long Id;

        private List<String> StreetLines;

        public String toXmlString() {
            XStream xstream = new XStream();
            xstream.processAnnotations(Request.class);
            xstream.aliasSystemAttribute(null, "class");
            String s = xstream.toXML(this);
            return s;
        }
    }

}

打印结果是

<Request>
  <Id>1</Id>
  <StreetLines>
    <a>
      <string>line1</string>
      <string>line2</string>
    </a>
  </StreetLines>
</Request>

我想要的结果是

<Request>
  <Id>1</Id>
  <StreetLines>
      <string>line1</string>
      <string>line2</string>
  </StreetLines>
</Request>

不要a标签。
注意不用手动replace

  • 写回答

2条回答 默认 最新

  • xicc 2022-07-05 14:04
    关注

    Arrays.asList("line1","line2");生成的集合是java.util.Arrays中的静态内部类ArrayList,里边的元素存储在属性名为a的数组中,所以生成的xml有a标签。测试换用java.util.ArrayList正常,猜测对java.util.ArrayList做了处理。如果坚持要用java.util.Arrays$ArrayList可以添加xstream.addImplicitArray(Class.forName("java.util.Arrays$ArrayList"),"a");来达到效果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月13日
  • 已采纳回答 7月5日
  • 创建了问题 7月5日

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan