标签: xstream

XStream或Simple

我需要决定使用哪一个.我的情况非常简单.我需要将一个简单的POJO/Bean转换为XML,然后再转换回来.没什么特别的.

我要找的一件事是它应该包括父属性.如果它可以在超类型上工作,那将是最好的,它可以只是一个标记界面.

如果有人可以将这两者与缺点和专业人士进行比较,那么哪一个缺少哪一个.我知道XStream也支持JSON,这是一个优点.但是,如果我们将JSON放在一边,Simple看起来就更简单了.在开发和社区方面,Simple的未来是什么?XStream非常受欢迎我相信,即使是"XStream"这个词,在SO上打了很多线程.

谢谢.

java xml xstream jaxb pojo

7
推荐指数
3
解决办法
6890
查看次数

XStream双下划线处理(Java)

我想用XStream将java类序列化为XML.

我需要使用一个下划线(canal_operateur)生成一个XML元素,但XStream在xml元素名称中添加了第二个下划线.

那么如何只保留一个下划线?

使用此类的默认配置:

public class Document implements Serializable {
    private String typedoc;
    private Fichier fichier;
    private String canalOperateur;  
    //xstream.aliasField("canal_operateur", Document.class, "canalOperateur");
    /*
    ** setter and getter
    */
}
Run Code Online (Sandbox Code Playgroud)

XStream将下划线加倍:

<document>
    <canal__operateur>canal</canal__operateur>
    <commentaire>commentaire</commentaire>
    <metadonnees/>
</document>
Run Code Online (Sandbox Code Playgroud)

java xstream underline

7
推荐指数
1
解决办法
2459
查看次数

XStream序列化空值

假设我有

class Student
{
String name;
int    age;
String teacher;
}
Run Code Online (Sandbox Code Playgroud)

然后 :

public class App1
{
    public static void main(String[] args)
    {
        Student st = new Student();
        st.setName("toto");

        XStream xs = new XStream();

        xs.alias("student",Student.class);

        System.out.println(xs.toXML(st));
    }
Run Code Online (Sandbox Code Playgroud)

}

给我 :

<student>
  <name>toto</name>
  <age>0</age>
</student>
Run Code Online (Sandbox Code Playgroud)

有没有办法处理空值?我的意思是 :

<student>
  <name>toto</name>
  <age>0</age>
  <teacher></teacher>
</student>
Run Code Online (Sandbox Code Playgroud)

如果我这样做是可能的

st.setTeacher("");
Run Code Online (Sandbox Code Playgroud)

但如果老师是空的,那就不行了

我尝试使用自定义转换器,但似乎空值不会发送到转换器.

java serialization xstream

7
推荐指数
1
解决办法
9052
查看次数

创建类似于WCF的JSON/XML REST Web服务的最佳Java方法是什么?

我正在寻找一种可供Java开发人员实现将通过JSON或XML进行通信的REST服务的最佳方法.我正在寻找适合生产的产品.

我知道Spring 3.0即将推出,但还没有完成 - 没有运气.

泽西岛是一个吗?

我的应用程序由Tomcat托管,使用Spring,Jettison和XStream.

我想使用一个开源软件包,这样我就可以获得与WCF.NET类似的开发经验,在那里我可以声明Url模板,映射GET/POST并获得XML或JSON输出.接受的有效负载也应该是XML或JSON.

有什么想法吗?

java spring tomcat xstream jersey

6
推荐指数
1
解决办法
3415
查看次数

XStream解析没有根节点的JSON

我目前正在使用XStream对JSON进行反序列化,并且它一直运行良好.但是,当我有如下JSON字符串时

{
    key1: { an_object: { something: 'foobar' } },
    key2: { another_object: { data: 'hi' }
}
Run Code Online (Sandbox Code Playgroud)

最值得注意的是它没有根节点,我不知道如何解析它.基本上,我希望DROP_ROOT_NODE与反序列化相反.

java json xstream

6
推荐指数
1
解决办法
4596
查看次数

XStream:在我解析时折叠XML层次结构

我有一个XML文档(由Adobe XFA表单生成),其中包含如下数据:

<Position>
   <PositionBorder>
       <Title/>
       <StartDate/>
       <EndDate/>
   </PositionBorder>
</Position>
Run Code Online (Sandbox Code Playgroud)

由于此文件是在其他地方定义的,因此我无权更改我获得的XML格式.

在我的Java代码中,我创建了一个包含Title,Start和End Dates的Position类.

我的问题是,当我使用XStream来解析文件时,它需要一个PositionBorder类来保存标题和日期.我想基本上忽略边框并将所有字段放入Position类.

我真正想做的是使用convertAnother方法来转换position元素的子元素.我试图这样做但它失败了,因为我的PositionConverter被调用了PositionBorder(当我调用convertAnother时).

任何人都有任何线索如何处理解析时折叠XML的结构?

java xml parsing converter xstream

6
推荐指数
1
解决办法
2804
查看次数

XStream同时解析属性和值

我有以下XML

<search ver="3.0">
    <loc id="ARBA0009" type="1">Buenos Aires, Argentina</loc>
    <loc id="BRXX1283" type="1">Buenos Aires, Brazil</loc>
    <loc id="ARDF0127" type="1">Aeroparque Buenos Aires, Argentina</loc>
    <loc id="MXJO0669" type="1">Concepcion De Buenos Aires, Mexico</loc>
    <loc id="MXPA1785" type="1">San Nicolas De Buenos Aires, Mexico</loc>
    <loc id="ARBA0005" type="1">Balcarce, Argentina</loc>
    <loc id="ARBA0008" type="1">Bragado, Argentina</loc>
    <loc id="ARBA0010" type="1">Campana, Argentina</loc>
    <loc id="ARBA0016" type="1">Chascomus, Argentina</loc>
    <loc id="ARBA0019" type="1">Chivilcoy, Argentina</loc>
</search>
Run Code Online (Sandbox Code Playgroud)

和一个城市课

public class City {

    private String  id;
    private Integer type;
    private String  name;

    // getters & setters...
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下别名来解析XML

xStream.alias("search", List.class);
xStream.alias("loc", City.class);
xStream.useAttributeFor("id", …
Run Code Online (Sandbox Code Playgroud)

xml xstream

6
推荐指数
2
解决办法
2万
查看次数

在Kettle下使用xstream时nodecom.thoughtworks.xstream.mapper.CannotResolveClassException

我使用的XStream水壶下反序列化XML的Java对象,它总是给我的例外: nodecom.thoughtworks.xstream.mapper.CannotResolveClassException

然后我分别从Kettle和一个简单的Java应用程序中尝试了我的代码.它工作正常.例如:

public static void main(String[] args) {
    person p = new person("JJ", "MM");
    XStream xstream = new XStream(new DomDriver());
    xstream.alias("personname", person.class);
    String xml = xstream.toXML(p);
    person pp = (person) xstream.fromXML(xml);
    System.out.println(pp.toString());
}


public class person {

    private String firstname;
    private String lastname;

    public person(String first, String last) {
        this.firstname = first;
        this.lastname = last;
    }

    public String getFirstname() {
        return this.firstname;
    }

    public String getLastname() {
        return this.lastname;
    }

    public void setFirstname(String name) {
        this.firstname = name;
    } …
Run Code Online (Sandbox Code Playgroud)

xstream kettle

6
推荐指数
1
解决办法
6662
查看次数

如何从没有类文件的序列化Java对象中检索对象状态

我有一个二进制文件,其中包含Java Serialized对象(它们是值对象),但我无法访问序列化创建这些对象的Class.没有类文件,JVM不允许我使用objectInputStreamInstance.readObject()读取对象,并正确地抛出java.lang.ClassNotFoundException.

是否有可以帮助以XML或其他标准格式提取数据的库?例如,如果下面的Person类被序列化并存储在一个文件中,我想从中提取数据:

类定义

class Person implements Serializable {
  int age;
  String name;
  public Person(int age, int name) {
    this.age = age;
    this.name = name;
  }
}
Run Code Online (Sandbox Code Playgroud)

必需的提取格式(无需访问类文件)

<Person>
  <age>10</age>
  <name>Name</name>
</Person>
Run Code Online (Sandbox Code Playgroud)

我还检查了以下但没有得到我想要的东西:

  1. Xstream(http://x-stream.github.io/)需要访问Java对象才能从该对象创建XML.但是,我无法为缺少类文件创建对象.
  2. 血清透析似乎很老了https://weblogs.java.net/blog/emcmanus/archive/2007/06/disassembling_s.html

谢谢您的帮助.

此致,Gursev

java xml serialization xstream deserialization

6
推荐指数
1
解决办法
1972
查看次数

如何处理 XStream 中的循环引用?

所述XStream序列库的权利要求是在序列化健壮复杂Java对象框(例如,没有修改的对象或需要映射)的进行。特别是,根据XStream 文档,XStream 可以处理循环对象引用。

所以我写了一个测试来检查这个 - 我试图序列化一个有点复杂的数据结构(LinkedHashMultimap),其中包括对 iteself 的引用:

import com.google.common.collect.LinkedHashMultimap;
import com.thoughtworks.xstream.XStream;

public class SerializationTest {

    public static void main(String[] args0) {

        // Create LinkedHashMultimap to serialize
        LinkedHashMultimap<String, Object> outObj = LinkedHashMultimap.create();
        outObj.put("x", 1);
        outObj.put("x", "abc");
        outObj.put("y", outObj);   // Add a self-reference

        // Try to serialize
        XStream xstream = new XStream();
        String xml = xstream.toXML(outObj);
        System.out.println(xml);  // Print XML to console for a quick peek

        // Try to deserialize - ERROR HERE!!!
        LinkedHashMultimap<String, Object> …
Run Code Online (Sandbox Code Playgroud)

java serialization xstream xml-serialization

6
推荐指数
1
解决办法
1276
查看次数