问题标签 [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.
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 更受支持的数据交换格式。
我只是为这个应用程序寻找库而发疯,我真的需要一些新的想法。任何人?
java - 如何在 XStream 中禁用不必要的转义?
默认情况下,XStream 会不必要地转义>
,"
...等。
有没有办法禁用它(并且只有 escape <
, &
)?
eclipse - 基本 XStream 注解
我刚开始使用 XStream Annotations,我试图弄清楚如何将注释与 XStream 对象相关联。从文档来看,这似乎是公认的方法:
我的问题是 Eclipse 没有将其识别为有效方法。一切似乎都在 Eclipse 中正确配置,因为它向我展示了 XStream 对象中的其余方法。这几乎就像 Eclipse 认为它是旧版本的 xstream。
我尝试在 Eclipse 中运行 Project > Clean ,但这并没有解决任何问题。我也尝试再次下载 XStream jar,但也没有帮助。
版本:XStream 1.3.1、Eclipse 3.4、Java 6
有没有人见过这种奇怪的行为,或者对如何解决它有任何想法?
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
,该迭代器使用自定义比较器,但比较器所做的只是比较整数(优先级)。
有没有人见过这个?知道我能做什么或改变什么吗?
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 代替 - 我真的不知道。
java - 使用 XStream 将 Java 对象序列化为 XML
问题是每次执行main方法时,a.xml的旧内容都丢失了,被新的替换掉了。如何在不丢失之前信息的情况下将内容附加到 a.xml 文件?
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()”
等等...只是警告,编译成功。
所以我认为,这只是一个注释/类路径问题。
java - 泛型集合和 XStream
有没有办法将(使用xstream)映射到List<Person>
例如?<friends>
List<Things>
<stuff>
谢谢!
java - 使用 XStream 从这种形式的 XML 中(反)序列化对象(Hashmap)
XML:
JAVA Hashmap:map = {key1=text1,key2=text2}
这不起作用。为什么?