JAXB XJC - 从 .xsd 向生成的模型动态添加字段

JAXB XJC - Dynamically adding fields to generated models from .xsd

提问人:M P Lewandowski 提问时间:1/25/2023 最后编辑:M P Lewandowski 更新时间:1/25/2023 访问量:262

问:

我正在使用版本从 .xsd 架构文件生成模型。我创建了一个名为的对象,该对象具有以下声明:jaxb2-maven-plugin3.1.0BookContext

package com.xmltesting;

import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlTransient;
import jakarta.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
public class BookContext {
    @XmlElement(name = "LibraryName")
    protected String libraryName;
    @XmlElement(name = "LibraryAddress")
    protected String libraryAddress;

    public String getLibraryName() {
        return libraryName;
    }

    public void setLibraryName(String value) {
        this.libraryName = value;
    }

    public void setLibraryAddress(String value) {
        this.libraryAddress = value;
    }

    public String getLibraryAddress() {
        return libraryAddress;
    }
}

现在,在不修改 .xsd 文件的情况下,我想将 BookContext 对象作为 XmlTransient 字段插入到插件生成的所有模型中。使用绑定/注释是否有任何可能?

BookContext 对象值将由 Listener 在解组过程中设置,我遇到的唯一问题是将字段动态添加到所有生成的模型中。

我尝试创建绑定:

<jaxb:bindings version="3.0"
               xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb"
               xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <jaxb:bindings schemaLocation="book_schema.xsd">
        <jaxb:bindings node="//xs:element[@name='Book']">
            <jaxb:class name="BookContext"/>
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

我也尝试了注释标志,但这个雅加达版本的 maven 插件似乎不支持它。

Java XML XML 解析 JAXB XJC

评论


答: 暂无答案