2011-03-02 4 views
2

타사 웹 서비스에서 데이터를 사용하려고합니다. 불행히도, 웹 서비스는 내가 말하는 XML이 비정상적인 XML 형식으로 데이터를 반환하고 있습니다. 여기에 내가 서비스에서 수신하고 데이터의 샘플입니다JAXB 주석 XML 루트 노드에 PCData가 포함 된 경우

<?xml version="1.0" encoding="utf-8"?> 
    <string xmlns="http://mynamespace">(-76.4844131, 39.1031567, 0.0000000) 
     (-76.4871168, 39.1031567, 0.0000000) 
     (-76.4875889, 39.1042890, 0.0000000) 
     (-76.4905500, 39.1052881, 0.0000000) 
    </string> 

대신 웨이 포인트 요소 (위도, 경도, 고도)의 목록이 포함 된 루트 노드를 가지고는, 루트 노드의 내용은 큰 문자열입니다 값. 문자열을 구문 분석 할 수는 있지만 JAXB (서비스 호출에 JERSEY를 사용하고 있기 때문에)를 사용하여이 반환 된 XML을 Java POCO로 변환하려고합니다.

루트 노드의 큰 문자열 본문을 경유지 목록이있는 POCO 클래스로 변환하는 것이 이상적이지만 JAXB 외부에서 사용자 지정 XML 비 직렬화가 필요하다고 생각합니다. 불행하게도

@XmlRootElement(name="string", namespace="http://mynamespace") 
public class Route { 
    private String _wayPoints; 

    @ ???? 
    public String getWayPoints() { returns _waypoints; } 
    public void setWayPoints(String wayPoints) { _wayPoints = wayPoints; } 
} 

, 내 속성 중 하나가 만족해야한다는 마샬 말할 JAXB에서 어떤 방법을 보지 못했다 : 나는 JAXB를 사용할 수있는 경우

는하지만이 같은 행복 거라고 루트 요소 또는 다른 요소 중 하나의 요소.

@XmlElementContent(ElementName="string") 

하고 내 루트 요소의 내용 (또는 innerText와)에 내 웨이 포인트 속성의 내용을 비 정렬 화/마샬링 것이다 : 나는 같은 내 속성에 주석을 수 있다면

이상적으로는 좋은 것입니다.

아무도 비슷한 문제가 있습니까? JAXB로 이것을 수행 할 수있는 방법이 있습니까? 아니면 그냥 문자열 구문 분석 및/또는 사용자 지정 XML deserializer 작성하는 것이 좋습니다.

감사합니다.

답변

4

당신은 @XmlValue

@XmlValue 
public String getWayPoints() { returns _waypoints; } 
+0

도현을 사용할 수 있습니다! 감사. 모든 JAXB 어노테이션 중에서 완전히 빠뜨린 것. 챔피언처럼 작동합니다! =) – CoderN8

관련 문제