当前位置: 首页 > 知识库问答 >
问题:

当使用JAXB生成Java类时,如何向每个类添加自定义字段?

亢建木
2023-03-14

我正在使用JAXB xjc命令行工具将XML模式(.xsd文件)转换为Java对象。

以下是我的.xsd文件的内容:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="ownerDog">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="owner" type="xs:string" />
            <xs:element name="dog" type="xs:string"/>
            <xs:element name="toy" type="toyType"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="toyType">
    <xs:sequence>
        <xs:element name="color" type="xs:string" />
        <xs:element name="price" type="xs:integer" />
    </xs:sequence>
</xs:complexType>

</xs:schema>
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "toyType", propOrder = {
    "color",
    "price"
})
public class ToyType {

    @XmlElement(required = true)
    protected String color;
    @XmlElement(required = true)
    protected BigInteger price;

    public String getColor() {
        return color;
    }

    public void setColor(String value) {
        this.color = value;
    }

    public BigInteger getPrice() {
        return price;
    }

    public void setPrice(BigInteger value) {
        this.price = value;
    }

}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "toyType", propOrder = {
    "color",
    "price"
})
public class ToyType {

    private BookKeeper bk;

    @XmlElement(required = true)
    protected String color;
    @XmlElement(required = true)
    protected BigInteger price;

    public String getColor() {
        return color;
    }

    public void setColor(String value) {
        this.color = value;
    }

    public BigInteger getPrice() {
        return price;
    }

    public void setPrice(BigInteger value) {
        this.price = value;
    }

}

我无法修改原始的。xsd文件,我需要修改它才能用于多个尚未看到的。xsd文件。

共有1个答案

华懿轩
2023-03-14

它有点混乱,但我能够通过一个小的bash脚本完成:

xjc -p com.company.ustruc_to_xml OwnerDog.xsd
cd ./com/company/ustruc_to_xml
for f in *.java; do sed -i 's/\(^public class .*$\)/\1\n\n    private BookKeeper bk;/' $f; done
cp *.java /Users/car/Documents/workspace/proj_ustruc_to_xml/src/com/ibm/ustruc_to_xml
 类似资料:
  • 问题内容: 我正在尝试使用Java从XSD文件中以编程方式生成JAXB类。我使用以下代码片段实现了这一目的: 生成的类仅包含字段的方法。但是,我想包括,和方法为好。生成代码时该怎么做? 问题答案: 在GitHub网站上,您将找到JAXB2 Basics项目 ,该项目提供了一组通用的实用程序插件,其中包括4个应解决您要实现的目标的插件: 等于插件 HashCode插件 二传手插件 ToString插

  • 我试图使用Java以编程方式从XSD文件生成JAXB类。我使用以下代码片段来实现这一点: 生成的类只包含字段的方法。但是,我还希望包括、和方法。如何在生成代码时做到这一点?

  • 问题内容: 我已经看过了,基本上我已经发现Calendar对象可以使用以下类似方法将1个月添加到指定的日期中: 尽管我不喜欢它在日期为30或31时的行为。如果我将1个月添加到01/31/2012,输出将变为02/29/2012。当我再增加1个月时,它将变为03/29/2012。 无论如何,我是否可以强制2012年2月29日自动变为2012年3月1日? 基本上这就是我想发生的事情: 默认日期:01/

  • 问题内容: 我正在使用Java 6,JaxB 2和SpringSource Tool Suite(与Eclipse相同)。我编写了一些Java类,使用JaxB从中生成XML模式。但是,我注意到为了使用JaxB从Java对象生成XML文档的功能,我需要一个ObjectFactory。 如何生成ObjectFactory而不会浪费我现在已有的类? 问题答案: 更新 这个问题可能指的是创建一个角色的作用

  • 我是Perl 6的新手。我的Atom编辑器中有以下代码,但我仍然不明白这是如何工作的。正如docs.raku.org所说,我复制了以下代码,但似乎不起作用。所以我将代码更改为: 输出为: 我知道它是有效的,但是docs.raku.org中的文档与此有点不同,它在第7行的AT-KEY方法之前没有“自”。有没有更详细的例子?

  • 我的工具基本上读取PDF并在JTextArea中打印PDF的内容。在我的PDF包含阿拉伯语的PH Mirjan字体之前,一切正常。我的文本区域显示一些垃圾字符,如下所示。 我该如何解决这个问题? 我的文本区域的默认字体是Arial Unicode MS。我可以配置文本区域的字体吗?假设我在本地下载了PH Mirjan,如何将文本区域字体更改为下载的字体。非常感谢任何建议或参考链接。 编辑 这给了我