2011-03-02 70 views
2

我在嘗試使用來自第三方Web服務的數據。不幸的是,Web服務正在返回數據,我認爲這是一種不尋常的XML格式。這裏是我從服務接收的數據的一個示例:當XML根節點包含PCData時的JAXB註釋

<?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> 

代替具有含有航點元件(LAT,LON,海拔)的列表的根節點,根節點的內容是一個大的字符串值。雖然我可以解析字符串,但我希望使用JAXB(因爲我正在使用JERSEY來處理服務調用)將此返回的XML轉換爲Java POCO。

理想情況下,將根節點的大型字符串主體轉換爲具有路點列表的POCO類是很好的,但我想這需要JAXB以外的自定義XML反序列化。

不過我倒是樂意與這樣的事情,如果我可以使用JAXB:

@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方式告訴編組,我的屬性之一應該是內容根元素或其他元素。

理想的情況下這將是很好,如果我能詮釋我的財產的東西,如:

@XmlElementContent(ElementName="string") 

這將元帥/解組我的航點屬性的內容到我的根元素的內容(或innerText屬性)。

有沒有人有類似的問題?有沒有辦法與JAXB做到這一點?或者我應該考慮解析字符串和/或編寫自定義XML解串器。

謝謝!

回答

4

您可以使用@XmlValue

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

衛生署!謝謝。完全錯過了所有JAXB註釋。像冠軍一樣工作! =) – CoderN8 2011-03-02 21:54:29