问题标签 [xstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2210 浏览

c++ - 类似于 XSTREAM 的 C++ 序列化 Clean XML

我需要编写一个 linux c++ 应用程序,它以 XML 格式保存它的设置(以便于手动编辑),并且还通过套接字和 HTTP 上的 XML 消息与现有应用程序进行通信。问题是我无法找到任何智能库来帮助我,我并不特别想编写 DOM 或 SAX 代码来编写和阅读一些非常简单的消息。

Boost Serialization 几乎是一个匹配项,但它在它生成的 xml 中添加了许多特定于 boost 的数据。这显然不适用于交换格式。我想知道是否可以使 Boost Serialization 或其他一些 c++ 序列化库生成干净的 xml。我不介意是否有一些必需的额外属性——比如版本属性,但我真的希望能够控制它们的命名并摆脱我不使用的“功能”——tracking_level 和 class_id实例。

理想情况下,我只想在 Java 中拥有类似于 xstream 的东西。我知道 c++ 缺乏自省,因此有必要进行一些手动编码 - 但如果有一个干净的解决方案来读取和写入简单的 XML 而不会产生混乱,那就太好了!

如果无法做到这一点,我也对 XML 模式是规范资源(合同优先)的工具感兴趣——这是 C++ 的一个很好的 JAXB 替代品。到目前为止,我只找到了像 CodeSynthesis XSD 这样的商业解决方案。我更喜欢开源解决方案。我已经尝试过 gSoap - 但它会生成非常丑陋的代码,而且它也是特定于 SOAP 的。

无奈之下,我也开始寻找 protobuffers 的替代序列化格式。这存在 - 但仅适用于 Java!令我惊讶的是,协议缓冲区似乎是比 XML 更受支持的数据交换格式。

我只是为这个应用程序寻找库而发疯,我真的需要一些新的想法。任何人?

0 投票
3 回答
5128 浏览

java - 如何在 XStream 中禁用不必要的转义?

默认情况下,XStream 会不必要地转义>" ...等。

有没有办法禁用它(并且只有 escape <, &)?

0 投票
1 回答
924 浏览

eclipse - 基本 XStream 注解

我刚开始使用 XStream Annotations,我试图弄清楚如何将注释与 XStream 对象相关联。从文档来看,这似乎是公认的方法:

我的问题是 Eclipse 没有将其识别为有效方法。一切似乎都在 Eclipse 中正确配置,因为它向我展示了 XStream 对象中的其余方法。这几乎就像 Eclipse 认为它是旧版本的 xstream。

我尝试在 Eclipse 中运行 Project > Clean ,但这并没有解决任何问题。我也尝试再次下载 XStream jar,但也没有帮助。

版本:XStream 1.3.1、Eclipse 3.4、Java 6

有没有人见过这种奇怪的行为,或者对如何解决它有任何想法?

0 投票
1 回答
465 浏览

java - Linux 上的 xstream 和 ibm j9 sdk 不兼容

我遇到了与 xstream 和 IBM J9 jdk(32 位版本)不兼容的问题。当我使用 sun jdk 时一切正常,但在 IBM jdk 上失败(仅在 linux 上。在 Windows 上,两个 jdk 都可以)。

调试时,错误似乎是 xstream 在内部使用 java.util.TreeSet 但集合的迭代器以错误的顺序返回元素(我知道这听起来很奇怪,但这是我看到的行为)。谷歌搜索相关的错误并没有给出任何有意义的结果

我尝试升级几乎所有可能的组件,但没有运气。我尝试了以下配置:

  • ibm jdk 1.6 SR 7(与 WebSphere 7.0.0.9 捆绑),xstream 1.2.2
  • ibm jdk 1.6 SR 8,xstream 1.2.2
  • ibm jdk 1.6 SR 8,xstream 1.3.1

(我用tomcat和WebSphere服务器都试过了,所以实际上有6种使用IBM jdk的配置)。

有问题的代码在com.thoughtworks.xstream.core.DefaultConverterLookup第 44 行附近的 class 中。它使用来自 class 的迭代器com.thoughtworks.xstream.core.util.PrioritizedList,该迭代器使用自定义比较器,但比较器所做的只是比较整数(优先级)。

有没有人见过这个?知道我能做什么或改变什么吗?

0 投票
1 回答
1667 浏览

java - 使用 XStream 中的属性反序列化 XML 文本元素

基本上,我想做这个问题的反面。

我正在从 Microsoft 的 Bing 批处理地理编码服务获取 XML,其中一些元素看起来像这样(从这里偷猎):

请注意,<Link>元素具有属性以及文本内容。以下是我试图反序列化的相关 POJO 类:

使用我当前的配置(类是别名,属性自动检测,以及所有的爵士乐),XStream 正确地反序列化元素上的NameRole属性<Link>,但不是实际的链接文本本身。

如何让 XStream 将该文本反序列化为对象String中的字段Link

我不想为此手动在链接文本*周围插入新元素。


*例如,替换

0 投票
1 回答
6990 浏览

java - XStream - 作为对象集合的根

我正在使用一个看起来像这样的 XML 有效负载(有关更全面的示例,请查看:http ://api.shopify.com/product.html )。

现在我的代码确实可以工作,但它做的事情似乎真的很“错误”——即将“产品”与 List.class 相关联。所以相关代码如下所示:

这很好,除非当我使用该 xstream 实例将任何对象外部化时,它当然总是使用“产品”,这不是我想要的。

我希望能够将通用集合映射到标签:

或者让以下片段起作用,目前还没有:

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

com.thoughtworks.xstream.mapper.CannotResolveClassException: products : products at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38 )

如果我添加:

那时它消失了......所以在我看来,mapperwrapper 没有在这里占据一席之地 - 可能是因为它正在寻找 ShopifyProductResponse 对象并找到一个 List 代替 - 我真的不知道。

0 投票
2 回答
3270 浏览

java - 使用 XStream 将 Java 对象序列化为 XML

问题是每次执行main方法时,a.xml的旧内容都丢失了,被新的替换掉了。如何在不丢失之前信息的情况下将内容附加到 a.xml 文件?

0 投票
1 回答
1445 浏览

java - 来自 XStream 的警告,在 XStreamImplicit 中找不到 itemFieldName

我正在尝试追踪警告的来源:

相关代码为:

查看 XStream JAR,我看到:

所以我不确定为什么会收到警告。它似乎没有引起问题,但我在编译器输出中得到了一堆这些,我想整理它们。

编辑:做了更多的挖掘,发现了这个:http: //java.dzone.com/articles/when-good-annotations-go-bad看看“Fabrizio”的评论

嗯....也许我也很着急回答,我不太明白...但是AFAIK当你编译了一个用A注释的类C1时,你可以把C1放在编译中(并运行) C2 的类路径,无需将 A 放入 C2 类路径。您只会收到警告,而 A 会被忽略(因为这样做是正确的:注释仅在特定上下文中有意义,而在 C2 上下文中,A 是无意义的)。

我刚刚仔细检查,针对包含 javax.persistence 注释的 JAR 编译示例类 X(但没有将 jpa.jar 放在编译器类路径中):

istral:/tmp> javac -classpath it-tidalwave-catalog.jar X.java it/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence:CategoryPB.class):警告:找不到注释方法' 'javax.persistence.Table' 类型中的名称()':找不到 javax.persistence.Table 的类文件/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence:CategoryPB.class):警告:在“javax.persistence.Column”类型中找不到注释方法“length()”:找不到 javax.persistence.Column 的类文件/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence: CategoryPB.class):警告:在“javax.persistence.Column”类型中找不到注释方法“name()”

等等...只是警告,编译成功。

所以我认为,这只是一个注释/类路径问题。

0 投票
2 回答
3485 浏览

java - 泛型集合和 XStream

有没有办法将(使用xstream)映射到List<Person>例如?<friends>List<Things><stuff>

谢谢!

0 投票
1 回答
1111 浏览

java - 使用 XStream 从这种形式的 XML 中(反)序列化对象(Hashmap)

XML:

JAVA Hashmap:map = {key1=text1,key2=text2}

这不起作用。为什么?