Simple XML Framework仅解析部分XML

时间:2012-06-22 15:16:26

标签: java xml xml-parsing xml-serialization simple-framework

我使用Simple XML框架来解析soap web服务的响应。我只想解析实际的Web服务响应并忽略soap信封和正文(即我不希望我的所有响应都有Envelope和Body类。)

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类,而不需要具有Envelope和Body类。

这可能吗?

由于 大卫

3 个答案:

答案 0 :(得分:0)

您可以尝试Java Xpath API通过xpath查询获取部件。

答案 1 :(得分:0)

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

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

了解更多信息

答案 2 :(得分:0)

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

实现

所以,你会有

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