【发布时间】:2017-03-18 01:32:34
【问题描述】:
我尝试解决将列表从我的 xml 映射到我的 Java 对象的高级问题。
我可以给问题起个名字:EVE XML API
该链接显示了一个我不能很好地进行逆向工程的问题:相同的元素标签具有不同的内容,但相同的属性具有不同的值。
将对象序列化为 XML 效果很好,但无法从生成的 XML 转换回对象。
我对我的各个类做了这个映射:
```
XStream xStream = new XStream( );
// Aliases
xStream.alias("eveapi", CallList.class);
xStream.aliasAttribute(CallList.class, "version", "version");
xStream.alias("row", RowCallGroups.class);
xStream.aliasField("rowset", Result.class, "callGroups");
xStream.aliasAttribute(RowCallGroups.class, "groupID", "groupID");
xStream.aliasAttribute(RowCallGroups.class, "name", "name");
xStream.aliasAttribute(RowCallGroups.class, "description", "description");
xStream.addImplicitCollection(RowSetCallGroups.class, "callGroups");
xStream.alias("rowset", RowSetCallGroups.class);
xStream.aliasAttribute(RowSetCallGroups.class, "name", "name");
xStream.aliasAttribute(RowSetCallGroups.class, "key", "key");
xStream.aliasAttribute(RowSetCallGroups.class, "columns", "columns");
xStream.alias("row", RowCalls.class);
xStream.aliasField("rowset", Result.class, "calls");
xStream.aliasAttribute(RowCalls.class, "accessMask", "accessMask");
xStream.aliasAttribute(RowCalls.class, "type", "type");
xStream.aliasAttribute(RowCalls.class, "name", "name");
xStream.aliasAttribute(RowCalls.class, "groupID", "groupID");
xStream.aliasAttribute(RowCalls.class, "description", "description");
xStream.addImplicitCollection(RowSetCalls.class, "calls");
xStream.alias("rowset", RowSetCalls.class);
xStream.aliasAttribute(RowSetCalls.class, "name", "name");
xStream.aliasAttribute(RowSetCalls.class, "key", "key");
xStream.aliasAttribute(RowSetCalls.class, "columns", "columns");
```
知道如何根据name= 属性的内容进行映射吗?
【问题讨论】:
-
嗨,请发布更多您的代码,以便我们这些尝试阅读它的人可以使用Minimal, Complete, and Verifiable example。特别是您的数据模型类(或至少它们的基本部分,如字段、包名称等)会很有帮助,这样我们就不必尝试从 XML 和 XStream 调用中反转您的代码。跨度>