标签: xstream

使用XStream序列化Hibernate对象的问题

我一直在面对这个问题,序列化上的hibernate对象产生了包含来自Hibernate的所有检测代码的意外xmls.

在序列化对象之前,我们对对象进行了一些清理.

但是,是否有可用于直接序列化对象的标准选项?

hibernate xstream

5
推荐指数
1
解决办法
6758
查看次数

使用Java中的XStream序列化为YAML

是否有Java XStream包的YAML驱动程序?

我已经在使用XStream来序列化/反序列化XML和JSON.我希望能够对YAML做同样的事情.

java yaml xstream

5
推荐指数
1
解决办法
1267
查看次数

XStream - Root作为对象的集合

我正在使用类似于此的XML有效负载(有关更全面的示例,请查看:http://api.shopify.com/product.html).

<products type="array">
   <product>
      ...
   </product>
   <product>
      ...
   </product>
</products>
Run Code Online (Sandbox Code Playgroud)

现在我的代码确实有效,但它做的事情似乎真的"错误" - 即它将"产品"与List.class相关联.所以相关代码如下所示:

    xstream.alias( "products", List.class );
    xstream.alias( "product", ShopifyProduct.class );
Run Code Online (Sandbox Code Playgroud)

这很好,除非我转到使用该xstream实例外部化任何对象时,它总是使用"产品",这不是我想要的.

我想要能够将通用集合映射到标签:

xstream.alias( "products", ( List<ShopifyProduct> ).class ); // way too easy 
Run Code Online (Sandbox Code Playgroud)

或者让以下snipet工作,但目前还没有:

    ClassAliasingMapper mapper = new ClassAliasingMapper( xstream.getMapper( ) );
    mapper.addClassAlias( "product", ShopifyProduct.class );
    xstream.registerLocalConverter( ShopifyProductResponse.class, "products", new CollectionConverter( mapper ) );
Run Code Online (Sandbox Code Playgroud)

我创建了ShopifyProductResponse类来尝试包装ShopifyProduct,但它没有任何告诉我:

com.thoughtworks.xstream.mapper.CannotResolveClassException:products:com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)中的产品,位于com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38) )

如果我添加:

xstream.alias( "products", List.class );
Run Code Online (Sandbox Code Playgroud)

然后它消失了...所以在我看来mapperwrapper没有抓住这里 - 可能是因为它寻找ShopifyProductResponse对象并找到一个List而不是 - 我真的不知道.

java xstream

5
推荐指数
1
解决办法
6804
查看次数

Spring REST 3支持XML和JSON

如果我们使用Spring MVC开发REST,它将支持XML和JSON数据.我在spring config bean中编写了ContentNegotiationViewResorverapp-servlet.xml

<bean
        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
        p:order="1">
        <property name="mediaTypes">
            <map>
                <entry key="xml" value="application/xml" />
                <entry key="json" value="application/json" />
            </map>
        </property>
        <property name="defaultViews">
            <list>
                <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                    <property name="marshaller">
                        <bean class="org.springframework.oxm.xstream.XStreamMarshaller"
                            p:autodetectAnnotations="true" />
                    </property>
                </bean>
                <bean
                    class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
            </list>
        </property>
    </bean>
Run Code Online (Sandbox Code Playgroud)

我的Spring REST控制器是:

@Controller
@RequestMapping("/rest/customers")
class CustomerRestController {

protected Log log = LogFactory.getLog(CustomerRestController.class);

@RequestMapping(method = POST)
@ResponseStatus(CREATED)
public void createCustomer(@RequestBody Customer customer,
        HttpServletResponse response) {

    log.info(">>>" + customer.getName());
    response.setHeader("Location", String.format("/rest/customers/%s",
            customer.getNumber()));
}


@RequestMapping(value = "/{id}", method = GET)
@ResponseBody
public Customer …
Run Code Online (Sandbox Code Playgroud)

java rest xstream spring-mvc jackson

5
推荐指数
1
解决办法
4万
查看次数

用于序列化和反序列化的xstream错误

我在Java中使用xStream来从java库中序列化java对象并在客户端对其进行反序列化.

我有几个问题:

如果我这样做:

XStream xstream = new XStream();
xstream.setMode(XStream.ID_REFERENCES);
xstream.autodetectAnnotations(true);
Writer writer = new FileWriter(xmlFile);        
writer.write(xstream.toXML(myObject));
writer.close();
Run Code Online (Sandbox Code Playgroud)

=>序列化没问题,但反序列化: Exception in thread "main" com.thoughtworks.xstream.io.StreamException: : only whitespace content allowed before start tag and not . (position: START_DOCUMENT seen .... @1:1)

如果我这样做:

XStream xstream = new XStream();
xstream.setMode(XStream.NO_REFERENCES);
xstream.autodetectAnnotations(true);
Writer writer = new FileWriter(xmlFile);        
writer.write(xstream.toXML(myObject));
writer.close();
Run Code Online (Sandbox Code Playgroud)

=>我遇到了序列化问题: Exception in thread "main" com.thoughtworks.xstream.io.StreamException: : only whitespace content allowed before start tag and not . (position: START_DOCUMENT seen .... @1:1) at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:78) at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:137) …

java xstream

5
推荐指数
1
解决办法
1万
查看次数

XStream:将XML的一部分保留为XML

我有以下XML:

<patient>
    <name>Mr. Sick</name>
    <report>
        <paragraph><bold>Conclusion</bold>text...</paragraph>
    </report>
</patient>
Run Code Online (Sandbox Code Playgroud)

我想将此转换为类患者的实例,如下所示:

Class Patient {
    String name = "Mr. Sick";
    String report = "<paragraph><bold>Conclusion</bold>text...</paragraph>";
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用XStream仅转换部分XML并将报告字段保留为XML格式?怎么做到呢?

java xml xstream

5
推荐指数
1
解决办法
1678
查看次数

如何使用XStream将XML解析为java对象

我有一些xml代码,我想解析这个java对象请帮助我.

   <Error>
    <number>1020</number>
    <Type>fatal</Type>
    <Text>Nagaraju</Text>
    <Text>Suresh</Text>
    <Text>Sound</Text>
    <Text>Rajesh</Text>
   </Error>
Run Code Online (Sandbox Code Playgroud)

java对象是

   Class Error{
      int number;
      String type;
      List<String>texts=new ArrayList<String>();
   }
Run Code Online (Sandbox Code Playgroud)

java xstream

5
推荐指数
1
解决办法
1万
查看次数

用gcj编译java和XStream.(例外:无法创建XmlPullParser)

我正在增强一个客户,这是一个更大的项目的一部分.由于速度不足,我被迫切换到CNI,因此我必须使用GNU-gcj编译器生成本机代码(gnu 4.6.3).

编译和链接工作正常(感谢-findirect-dispatch标志),我没有任何问题执行输出.但是当涉及到客户端和服务器之间的通信时,客户端会立即断开连接.原因:

[XStreamClient Reader] WARN - 客户端断开连接(例外:com.thoughtworks.xstream.io.StreamException:无法创建XmlPullParser)

(此Exeption仅出现在客户端的gcj编译版本中.当我使用java解释器运行代码时 - 事情运行良好(但速度太慢^^)) - >具有挑战性的部分是我无法检索源代码发生此异常的代码,因为它位于客户端使用的预编译(Java类文件)库中.(我无法联系该图书馆的作者)

我想这个库会调用XppReader然后尝试创建一个XmlPullParser类并失败.

我通过解压缩它们并编译创建的*.class文件然后链接目标文件来绑定XStream(vers.1.4.3)库(以及其他所需的*.jars).这似乎也适用于所有其他图书馆.(我的操作系统= Ubuntu)

我已经做了什么来克服这个问题:我搜索了XStream/XmlPullParser和gcj,并用不同的版本替换了"xmlpull" - 和"kxml2"文件.但没有任何效果.你们中的任何人都知道可能是什么解决方案吗?

编辑:

我发现XmlPullParser创建失败的原因是XmlPullParserFactory.newInstance函数无法找到带有/services/org.xmlpull.v1.XmlPullParserFactory文件的META-INF目录.这是因为我只编译并链接了*.jar的*.class文件.因此,只要我找到了将META-INF目录链接到该函数可以找到并访问它的可执行文件的方法,就应该解决问题.你们中的任何人都知道这样做的方法吗?

java compiled gcj xstream xmlpullparser

5
推荐指数
1
解决办法
5496
查看次数

XStream在转换器中获取父对象

对于本地转换器,当编组到XML时,有没有办法访问父对象?

我需要使用来自第三方源的项目对集合进行编组 - 使用存储在父对象中的id.

唉,似乎无法查询通向当前对象的对象路径.还是有吗?

xstream

5
推荐指数
1
解决办法
313
查看次数

XStream非法反射访问升级到Java 10后出现问题

警告:发生了非法的反射访问操作警告:com.thoughtworks.xstream.core.util.Fields(文件:libraries / xstream-1.4.10.jar)对字段java.util.TreeMap.comparator的非法反射访问

java xstream

5
推荐指数
0
解决办法
1908
查看次数

标签 统计

xstream ×10

java ×8

compiled ×1

gcj ×1

hibernate ×1

jackson ×1

rest ×1

spring-mvc ×1

xml ×1

xmlpullparser ×1

yaml ×1