简单的 XML 框架:元素列表中的字符串在序列化时没有命名空间前缀
Posted
技术标签:
【中文标题】简单的 XML 框架:元素列表中的字符串在序列化时没有命名空间前缀【英文标题】:Simple XML Framework: Strings in elementlist not having namespace prefix when serializing 【发布时间】:2014-12-18 14:09:05 【问题描述】:我有这个代码:
@ElementList(name = "Telefono")
@Namespace(reference = "efactura")
protected List<String> telefono;
有一个祖先:
@Namespace(prefix = "ns2", reference = "efactura")
public class CFEDefType
它会生成:
<ns2:Telefono class="java.util.Arrays$ArrayList">
<string>12341234</string>
<string>0303456</string>
</ns2:Telefono>
当我期待时:
<ns2:Telefono class="java.util.Arrays$ArrayList">
<ns2:string>12341234</string>
<ns2:string>0303456</string>
</ns2:Telefono>
有可能实现吗?
【问题讨论】:
【参考方案1】:您是否尝试过这样做:
@Namespace(prefix = "ns2")
public final class Ns2String extends String
更新 由于doppelganger在cmets中写了不可能扩展String(它是最终的),所以他提出了这个(正确的)解决方案:
@Root(name="string")
@Namespace(reference = "efactura")
public static class Ns2String
@Text
private String string = null;
public Ns2String(String string)
this.string = string;
public String getString()
return string;
public void setString(String string)
this.string = string;
【讨论】:
嗯,它有点工作,首先,你不能扩展字符串,但它以某种方式做到了:@Root(name="string") @Namespace(reference = "efactura") public static class Ns2String @Text 私有字符串字符串 = null; public Ns2String(String string) this.string = string; 公共字符串 getString() 返回字符串; public void setString(String string) this.string = string; 是的,你是对的,String 是最后一门课,我会将你自己的答案与我的答案合并。以上是关于简单的 XML 框架:元素列表中的字符串在序列化时没有命名空间前缀的主要内容,如果未能解决你的问题,请参考以下文章