【问题标题】:Simple XML Framework parse only part of the XML简单 XML 框架仅解析部分 XML
【发布时间】:2012-06-22 15:16:26
【问题描述】:

我正在使用 Simple XML 框架来解析来自一个肥皂网络服务的响应。我只想解析实际的 Web 服务响应并忽略肥皂信封和正文(即我不希望我的所有响应都有信封和正文类)。

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 类。

这可能吗?

谢谢 大卫

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      更多信息

      【讨论】:

        【解决方案3】:

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

        所以,你将拥有

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-07
          • 1970-01-01
          • 2017-12-07
          • 1970-01-01
          相关资源
          最近更新 更多