java - JAXB 适配器返回 xml 节点或原始 xml 文本而不是对象

标签 java xml jaxb

有可能吗:

Class Qwe {
    @SuperAdapter
    Map<String, String> prms
}

编码后:

<qwe>
    <prms>
        <prm>
             <name>qwe</name>
             <val>zxc</val>
        </prm>
        <prm>
             <name>tyu</name>
             <val>ghj</val>
        </prm>
        ...
    </prms>
</qwe>

如果我可以访问 DOM 或插入 ram xml 部分,我可以解决这个问题。 或者告诉我最好的解决方案。 我可以通过子类解决它,但我认为这不是一个好的解决方案。

最佳答案

请参阅this post作者:布莱斯·杜安。片段:

package blog.map;

import java.util.*;
import javax.xml.bind.annotation.*;

@XmlRootElement
public class Customer {

    private Map<String, Address> addressMap = new HashMap<String, Address>();

    @XmlElementWrapper(name="addresses")
    public Map<String, Address> getAddressMap() {
        return addressMap;
    }

    public void setAddressMap(Map<String, Address> addressMap) {
        this.addressMap = addressMap;
    }

}

输出:

<?xml version="1.0" encoding="UTF-8"?>
<customer>
    <addresses>
        <entry>
            <key>shipping</key>
            <value>
                <street>2 B Road</street>
            </value>
        </entry>
        <entry>
            <key>billing</key>
            <value>
                <street>1 A Street</street>
            </value>
        </entry>
    </addresses>
</customer>

关于java - JAXB 适配器返回 xml 节点或原始 xml 文本而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26232916/

相关文章:

java - float 操作按钮加号未显示

python - LXML 杀死了我的 CDATA 部分

java - JAXB 解码返回 null

jaxb - Jackson 编码(marshal) XMLAttribute 获取 "null"值

java - 64 位操作系统上的 32 位 Java : is there a limit to number of JVMs?

java - 为什么没有收到正确的数据?

java - 是java中的类型转换还是其他什么?

java - 将 XML 解析值存储在 textview 而不是 listeview 中

c# - 按名称选择子节点的子集

java - JAXB:编码后替换 namespace