我是XSD和JAXB的新手。 我有一个XSD模式文件说logic.xsd,它生成一个完整的包,比如“com.ilume”,包含一些类(Employee.java)和package-info.java文件。
现在我想在同一个包中添加一个自定义适配器类(适配器类,如How to configure JAXB so it trims whitespaces when unmarshalling tag value?中显示的StringTrimAdapter
类)。
这个适配器类应该从我的logic.xsd生成(我应该在logic.xml文件中添加什么,以便它可以生成StringTrimAdapter
?)
我希望在package-info.java中添加@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class)
。我应该写什么样的约束力以及在哪里?
答案 0 :(得分:0)
昨天我遇到了同样的问题。
最佳解决方案是使用
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
。 它是一个现有的内置类型适配器,可以帮助您修剪CDATA内容。
例如,让我们拿这个XML
<books>
<book>
<name><![CDATA[ <br> Harry Potter </br>
]]></name>
</book>
</books>
为此,您将拥有一个Java类。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "books")
public class Books {
@XmlValue
protected String name;
......
}
您必须在包含CDATA部分的变量名称上方添加适配器 。
@XmlValue
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
protected String name;
然后IDE将要求您导入所需的库文件
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
多数民众赞成。希望它能帮助你:)。