2011-03-02 84 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