java - 简单框架 xml 反序列化 - 查找属性是否存在

标签 java xml-deserialization simple-framework

是否可以在 Simple 中查找是否存在指定属性java的框架? 假设我有以下 xml:

<packet id="250">
  <msg id="1" uniqueAttribute1="some value" x="7" />
  <msg id="2" someStuff="123" />
  <msg id="3" someOtherStuff="abc" />
</packet>

上面的所有消息都应该反序列化为可能从公共(public)基类继承的不同类的对象。哪个消息应该实例化哪个类的对象应该取决于属性的名称。这意味着如果消息中存在名为“uniqueAttribute”的属性,则应创建 Foo 类的对象,如果存在“someStuff”,则应创建 Bar 类的对象,依此类推。

我想到的唯一方法是尝试反序列化到类的对象并捕获异常并重试,这听起来很糟糕。

如果“简单”框架无法实现,也许您可​​以建议其他方法?

最佳答案

有多种方法可以做到这一点。通常可以使用访问者或策略。请参阅以下内容了解如何使用访客。这使用命名空间来确定类型,但您可以更改它以使用一个或多个属性。

https://simple.svn.sourceforge.net/svnroot/simple/trunk/download/stream/src/test/java/org/simpleframework/xml/strategy/ClassToNamespaceVisitor.java

此外,您可以使用转换器来执行此操作。看看教程。

关于java - 简单框架 xml 反序列化 - 查找属性是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298242/

相关文章:

java - Android 的奇怪问题,程序可以编译但无法运行

java - 使用 ArrayList<ArrayList<String>>() 时 java 中出现意外输出

java - 如何在 Play Framework 中存储 cookie?

php - 如果 XML 节点是值节点,则 simplexml_load_string 不会创建属性数组

c# - 如何避免异常反序列化无效的枚举项?

java - 如何将空字符串序列化为单个空标记?

android - 如何在 SimpleXmlConverter 中为 Retrofit 1.9.0 设置自定义日期格式?

java - SQL 准备语句抛出有关语法的错误

c# - 使用 C# 反序列化 XML HTTP 响应

java - 简单的 XML 和自定义列表