2012-04-24 5 views
2

XML 스키마에서 JAXB를 사용하여 Bean 모델을 생성하고 있습니다. 스키마의 구조 중 하나는 특정 태그가 존재하는지 여부입니다. 예를 들어 아래의 스니 플릿 핑 (ping) :JAXB는 내용이없는 태그 값을 설정합니다.

<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()"를 수행 할 수 없습니다. 하지만 요소를 만들 문서가 없습니다. by JAXB 생성 된 ObjectFactory에는 createPing() 메소드가 없습니다 ...

어떻게 ping을 설정합니까? 다음과 같이

+0

이 귀하의 질문에 대답 수 있습니다 http://stackoverflow.com/questions/594537/how-to-instantiate-an-empty-element-with-jaxb –

답변

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을 사용하여 시도 할 수있는 방법에 대한 링크가 아래에 있습니다.

+0

대안이다 ping set을 사용하여 XML을 구문 분석하고 getter에서 값을 가져옵니다. \t \t \t \t \t \t Object lPing = lJAXBWithPingSet.getBuildtimeBehavior(). getPing(); \t \t \t \t \t \t lMyJAXB.getBuildtimeBehavior(). setPing (lPing); – tbeernot

관련 문제