2

XML スキーマから Bean モデルを生成するために JAXB を使用しています。スキーマの構造の 1 つは、特定のタグが存在する場合と存在しない場合があるということです。たとえば、以下のスニペットの 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) 

今、そのタグを設定またはクリアしたいと思います。ただし、「java.lang.Objectをorg.w3c.dom.Elementにキャストできない」という結果になるため、単に「new Object()」を実行することはできません。しかし、要素を作成するドキュメントがありません。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 に答える