Java 从键值列表到属性key=value
我有一个关于JAXB的问题。基本上,我有两门课:Java 从键值列表到属性key=value,java,jaxb,Java,Jaxb,我有一个关于JAXB的问题。基本上,我有两门课: Element { String name List<Attribute> attributes; } Attribute { String key String value } 元素{ 字符串名 列出属性; } 属性{ 串键 字符串值 } 当然还有getter和setter,还有jaxbxmlrootelement 由此生成的XML是: <element> <attributes>
Element {
String name
List<Attribute> attributes;
}
Attribute {
String key
String value
}
元素{
字符串名
列出属性;
}
属性{
串键
字符串值
}
当然还有getter和setter,还有jaxbxmlrootelement
由此生成的XML是:
<element>
<attributes>
<key>id</key>
<value>1</value>
</attributes>
<name>My Element</name>
</element>
身份证件
1.
我的元素
但我要找的是更像这样的东西:
<element id="1">
<name>My Element</name>
</element>
我的元素
也就是说,对于属性的每个实例,我希望key=value(作为属性)
这在JAXB中可能吗
问候,,
莫顿我认为它不适用于列表。但有一种替代方法是使用
- 地图和
- @XmlAnyAttribute
@XmlRootElement
public static class Element
{
@XmlElement
String name;
@XmlAnyAttribute
Map<QName, Object> map;
}
{
//
Element element = new Element();
element.name = "a wonderful name";
element.map = new HashMap<QName, Object>();
element.map.put( new QName( "id" ), "1" );
element.map.put( new QName( "other" ), "2" );
}
@XmlRootElement
公共静态类元素
{
@XmlElement
字符串名;
@XmlAnyAttribute
地图;
}
{
//
元素=新元素();
element.name=“一个很棒的名字”;
element.map=新的HashMap();
element.map.put(新的QName(“id”),“1”);
element.map.put(新的QName(“其他”),“2”);
}
结果:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<element id="1" other="2">
<name>a wonderful name</name>
</element>
好名字
致以最良好的祝愿 是的,我想我得做点类似的事情。我希望能够为它使用XmlAdapter,但它似乎没有做到这一点(因为XmlAnyAttribute需要映射,并且不能使用从适配器返回的内容)。最后,我让属性的getter返回新的AttributeToMapAdapter().marshal(_attributes)(其中_attributes是属性的内部列表)。谢谢