2

我正在使用 JAXB 从 XML 模式生成 bean 模型。模式中的构造之一是某个标签可以存在或不存在。例如下面代码片段中的 ping:

   <buildtime-behavior>
        <ping/>
    </buildtime-behavior>

在 XSD 中,我将其映射为:

<xs:element name="buildtime-behavior">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="ping" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

在由 JAXB 生成的 BuildtimeBehavior 类中,这会导致:

public void setPing(Object value) 

现在我想设置或清除该标签。但是,我不能简单地执行“new Object()”,因为这将导致“java.lang.Object 无法转换为 org.w3c.dom.Element”。但我没有创建元素的文档。由 JAXB 生成的 ObjectFactory 没有 createPing() 方法...

如何设置 ping?

4

1 回答 1

0

ping您可以按如下方式创建元素:

package forum10294935;

import javax.xml.parsers.*;
import org.w3c.dom.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document document = db.newDocument();
        Element pingElement = document.createElement("ping");
    }

}

在您的问题中,您说您从 XML 模式生成了模型。如果您可以修改模型或从 Java 类开始,下面是一个链接,您可以尝试使用XmlAdapter.

于 2012-04-24T09:37:28.807 回答