java - 如何使用 JAXB 和 XJC 编写我的 XSD 以匹配所需的 XML 和 Java 格式

标签 java xsd jaxb code-generation xjc

<分区>

Possible Duplicate:
How generate XMLElementWrapper annotation with xjc and customized binding

我希望能够使用 JAXB 处理这种格式的 XML ...

<configuration>
  <!-- more content here -->
  <things>
    <thing>
      <name>xx1</name>
      <value>yy1</value>
    </thing>
    <thing>
      <name>xx2</name>
      <value>yy2</value>
    </thing>
  </things>
  <!-- more content here -->
</configuration>

我想将上述 XML 编码到这些 Java 类中(为简单起见,我保留了诸如 publicprotected 以及 getters/setters 等修饰符) :

class Configuration {
  List<Thing> things;
}

class Thing {
  String name;
  String value;
}

我当前 XSD 结构的相关部分大致如下所示:

<complexType name="Configuration">
  <sequence>
    <!-- ... -->
    <element name="things" type="ns:Things" minOccurs="0" maxOccurs="unbounded"/>
    <!-- ... -->
  </sequence>
</complexType>

<complexType name="Things">
  <sequence>
    <element name="thing" type="ns:Thing" minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
</complexType>

不幸的是,XJC 还为 Things 生成了一个类,即使在处理的 Java 部分确实不需要它。所以我的输出是这样的:

class Configuration {
  Things things;
}

class Things {
  List<Thing> thing;
}

class Thing {
  String name;
  String value;
}

有什么方法可以告诉 XJC 避免生成这个不必要的类吗?或者有什么办法可以重新措辞我的 XSD 以避免那一代?这两种选择都适合我。

事实上,我想我需要生成 @XmlElementWrapper 注释,如下所示:

最佳答案

这里的这个问题记录了一个可能的解决方案:

How generate XMLElementWrapper annotation with xjc and customized binding

XJC plugin允许生成以下 Java 代码,完全按照我的需要执行(省略了不相关的注释):

class Configuration {

  @XmlElementWrapper(name = "things")
  @XmlElement(name = "thing")
  List<Thing> things;
}

class Thing {
  String name;
  String value;
}

关于java - 如何使用 JAXB 和 XJC 编写我的 XSD 以匹配所需的 XML 和 Java 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9240837/

相关文章:

java - 带有未知@XmlRootElement 的 Jaxb Unmarshall

java - Mockito mockStatic 无法解析符号

java - Calendar 的 getActualMinimum 返回错误值

xsd - Notepad++ 文档标记为 utf-16 但包含 utf-8 内容

java - 如何使用 xsom 查找 xsd 中元素的最小-最大出现次数

xml - 从 XSD 生成 Go 结构

java - 通过实现 onSeekBarChangeListener 在 TextView 中设置多个搜索栏值

java - 更改 NumberPicker 的显示值

Oracle SQL Developer 数据建模器的 XML 模式

java - Jax-b 文字 xml 序列化