简单的XML框架仅解析XML的一部分

问题描述:

我正在使用简单的XML框架来解析来自soap web服务的响应。我只想分析实际的Web服务响应并忽略肥皂信封和正文(即,我不想让我的所有响应都有信封和正文类)。简单的XML框架仅解析XML的一部分

XML:

<Envelope> 
    <Body> 
     <TopGoalScorersResponse> 
      <TopGoalScorersResult> 
       <tTopGoalScorer> 
        <sName>Alan Dzagoev</sName> 
        <iGoals>3</iGoals> 
        <sCountry>Y</sCountry> 
        <sFlag>http://footballpool.dataaccess.eu/images/flags/ru.gif</sFlag> 
        <sFlagLarge>http://footballpool.dataaccess.eu/images/flags/ru.png</sFlagLarge> 
       </tTopGoalScorer> 
      </TopGoalScorersResult> 
     </TopGoalScorersResponse> 
    </Body> 
</Envelope> 

因此,对于这个回应,我想有TopGoalScorersResponse,TopGoalScorersResult和TopGoalScorer类和不要求有一个信封和正文类。

这可能吗?

感谢 大卫

你可以试试Java Xpath API通过XPath查询得到一个部分。

您可以使用StAX解析器来解析XML文档。然后,您可以使用生成的XMLStreamReader前进到您希望开始的元素,然后从那里解组(假设Simple XML可以从StAX XMLStreamReader解组)。

下面是一个链接到一个答案,我做了一些非常相似,但与JAXB (JSR-222)

更多信息

基本上,你想要做的是使用@Path

所以实现的,你必须

@Root(strict=false, name="Envelope") 
public class Root { 
    @Path("Body") 
    @Element(inline=true) 
    private TopGoalScorersResult topGoalScorersResult; 
}