java - 将 JAXB 与字符一起使用

标签 java jaxb

我有一个字符类型的@XMLElement,但是当它被编码时,它似乎被放入一个二进制字符串中,例如......

'n' becomes 110
'e' becomes 101

如果不将它们转换为字符串,有什么方法可以输出文本字符而不是表示形式?

最佳答案

您可以编写一个 XmlAdapterXmlAdapter 允许您将一种类型的对象转换为另一种类型的对象,以便进行编码/解码。

XmlAdapter(字符适配器)

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class CharacterAdapter extends XmlAdapter<String, Character> {

    @Override
    public Character unmarshal(String v) throws Exception {
        return v.charAt(0);
    }

    @Override
    public String marshal(Character v) throws Exception {
        return new String(new char[] {v});
    }

}

Java 模型

XmlAdapter 使用 @XmlJavaTypeAdapter 注释指定:

import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

@XmlRootElement
public class Foo {

    private Character bar;

    @XmlJavaTypeAdapter(CharacterAdapter.class)
    public Character getBar() {
        return bar;
    }

    public void setBar(Character bar) {
        this.bar = bar;
    }

}

了解更多信息

关于java - 将 JAXB 与字符一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972981/

相关文章:

eclipse - 仅在 Eclipse 中获取 "The POM for <name> is invalid, transitive dependencies (if any) will not be available"

TDD session 期间出现 java.lang.AssertionError

java - 根据给定的前缀对字符串列表进行排序

java - 运行 java 的预定义输入脚本

Java 11 : import javax. xml.ws.WebFault: "Cannot resolve symbol ws"

java - 在 Jaxb 中获取元素的动态属性

Java 生成的 XML 在 .Net/SQL 中显示特殊字符

Gradle JAXB WSDL 任务失败,出现 java.lang.NoClassDefFoundError : javax/xml/bind/JAXBContext

java - 从 java 调用 Soap Webservice(用 C# 编写)

java - Java等同于SecureString