我正在使用JAXB从XML模式生成bean模型。模式中的一个构造是可以存在或不存在某个标记。例如下面的sniplet中的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”。但是我没有Document来创建Element。由JAXB生成的ObjectFactory没有createPing()方法......
如何设置ping?
答案 0 :(得分: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
的方法的链接。