如何通过XSD文件

时间:2017-02-09 06:55:19

标签: java xml web-services xsd jaxb

我是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)。我应该写什么样的约束力以及在哪里?

1 个答案:

答案 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;

多数民众赞成。希望它能帮助你:)。