java - xStream 问题 - 如何反序列化多个对象

标签 java xml xml-parsing xstream

我正在使用 xStream 来操作 XML。一切都好。放上 XML 存档和其他东西。但是,我有一个问题:

示例:我的 xml 包含一个标签,在这个标签中,我还有一些名为 <comment> 的标签.看一个示例代码:

<comments>
   <comment>
      <id>1</id>
      <desc>A comment</desc>
   </comment>
   <comment>
      <id>2</id>
      <desc>Another comment</desc>
   </comment>
   <comment>
      <id>3</id>
      <desc>Another one comment</desc>
   </comment>
</comments>

而且是渐进的。 我可以在标签内做500个标签。这些评论属于评论类型。

如何使用 xStream 进行序列化以将所有这些标记放入类中?我不知道如何在类中让它接收各种对象。

很明显,我会用一个数组或其他一些东西来做这个。 但我不知道该怎么做。

最佳答案

对于该 XML,您可能希望拥有如下类结构:

public class Comment {
    long id
    String desc
}

public class Comments {
    List<Comment> comments = new ArrayList<Comment>();
}

您的解码逻辑将类似于:

XStream xstream = new XStream();
xstream.alias("comments", Comments.class);
xstream.alias("comment", Comment.class);
xstream.addImplicitCollection(Comments.class, "comments");
Comments comments = (Comments)xstream.fromXML(xml);

此外,正如 Nishan 在评论中提到的,您的 XML 格式不正确。您需要确保您的 <comment></comment> 结尾而不是 </comments> .您需要先解决此问题,此答案中的任何代码才能正常工作。

关于java - xStream 问题 - 如何反序列化多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5450275/

相关文章:

ruby - 使用 Nokogiri 解析 XML 文件?

python - Minidom - 检查 XML 中是否存在标签

java - 如何从另一个 fragment 更改 fragment 并将其应用到 main_content 布局上?

java - 匹配模式和计算相等性之间的区别

c# - Linq to Xml : selecting elements if an attribute value equals a node value in an IEnumerable<XElement>

xml - 使用正则表达式查找控制字符的 XML 字符引用

Java:将 StreamResult 转换为 DOM

java - 在 Java 中使用 xpath 编辑 XML 文件中的常规节点

java - Selenium POM 和 TestNG NullPointer 异常

java - 如何在 android.support.design.chip.Chip 中设置文本颜色?