gpt4 book ai didi

java - org.simpleframework.xml.ElementMap 的正确用法?

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:33 27 4
gpt4 key购买 nike

我正在尝试使用 org.simpleframework.xml.ElementMap 将以下 XML 映射到我的 Java 类:

<my_map class="java.util.HashMap">

<my_entry id="one" other_attribute="abc">
<my_entry_element>blahblah one</my_entry_element>
</my_entry>

<my_entry id="two" other_attribute="def">
<my_entry_element>blahblah two</my_entry_element>
</my_entry>

</my_map>

但是,我找不到任何解决方案。我能得到的更接近的是将每个条目包含在一个冗余的 <entry id="xyz"> ... </entry> 中。像这样:

<my_map class="java.util.HashMap">

<entry id="one">
<my_entry id="one" other_attribute="abc">
<my_entry_element>blahblah one</my_entry_element>
</my_entry>
</entry>

<entry id="two">
<my_entry id="two" other_attribute="def">
<my_entry_element>blahblah two</my_entry_element>
</my_entry>
</entry>

</my_map>

上面的 XML 片段与以下 Java 包装器配合得很好:

@Root(name="my_root_class")
public class MyRootClass {

@ElementMap(name="my_map"
,key="id"
,keyType=String.class
,valueType=MyEntry.class
,attribute=true
,inline=false
)
private Map<String, MyEntry> myEntries = new HashMap<String, MyEntry>();

// ... (getters/setters/..)

}

元素映射正确:

MyRootClass [
two: MyEntry [id=two, otherAttribute=def, myEntryElement=blahblah two]
one: MyEntry [id=one, otherAttribute=abc, myEntryElement=blahblah one]
]

然后,我尝试设置“inline=true”并删除多余的<entry> .如果我设置 inline="true"entry="my_entry",并使用我在此消息顶部引入的第一个 XML(真实的,那个我希望能够使用),但出现错误:

ExceptionUnable to satisfy @org.simpleframework.xml.ElementMap(keyType=class java.lang.String, inline=true, entry=my_entry, name=my_map, data=false, empty=true, value=, attribute=true, valueType=class com.mycomp.thomas.simpleXml.MyEntry, required=true, key=id) on field 'myEntries' private java.util.Map com.mycomp.thomas.simpleXml.MyRootClass.myEntries for class com.mycomp.thomas.simpleXml.MyRootClass at line 1

我还尝试使用 value="my_entry" 甚至重命名 <my_entry>在 XML 文件中为 <entry> (默认的),没有任何作用。

谁能告诉我在@ElementMap 中使用哪些权限参数来使本文开头介绍的 XML 起作用?

最佳答案

我也遇到过这个问题。

不幸的是,当前版本的 Simple Framework (2.7) 似乎无法实现所需的紧凑序列化。

请注意,有一个多年未合并的补丁支持将原始值序列化为入口属性: https://sourceforge.net/tracker/index.php?func=detail&aid=3032849&group_id=112203&atid=661528

关于java - org.simpleframework.xml.ElementMap 的正确用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com