xml - 使用 Spring/Tomcat 的库来解析 XML

标签 xml spring jsp tomcat xml-parsing

我不是开发人员,只是临时挑选东西,但有一个小问题。我正在做的应用程序很简单。我对 Hyperic 进行了 Web 服务调用,以获取一组服务器的状态,从而生成 xml 输出。

例如

<LastMetricsDataResponse>
    <Status>Success</Status>
    <LastMetricData resourceId="11678" resourceName="ptseelm-ax4066.myco.com HQ Agent 5.7.1" metricId="15126" metricName="JVM Free Memory">
        <DataPoint timestamp="1380197100000" value="1.479712E7"/>
    </LastMetricData>
    <LastMetricData resourceId="11678" resourceName="ptseelm-ax4066.myco.com HQ Agent 5.7.1" metricId="15127" metricName="JVM Total Memory">
        <DataPoint timestamp="1380197100000" value="3.5864576E7"/>
    </LastMetricData>
</LastMetricsDataResponse>

鉴于我正在编写 JSP 的服务器是一个 Tomcat6 服务器,其中已经有 spring 框架库,如果我不需要的话,使用任何其他库似乎很愚蠢。

我基本上需要做的就是获取 resourceNames、metricNames、timestamp 和 value...根据值将它们打印在表格或某种交通信号灯中。

这是我坚持的第一步,一个简单的 JSP,它可以简单地调用 webserviceurl 并将我想要的东西的 XML 解析为 HashMap 或集合或类似的东西。

请帮助菜鸟:)

最佳答案

如果您已经有一个 Spring MVC 应用程序,我认为最简单的解决方案是使用简单的 JAXB 注释编码 XML 网络服务响应到 Java 对象。

(JAXB 不包含在 Tomcat 或 Spring 中,但它是一个轻型 Jar,可以优雅地解决您的问题)

然后,您可以从 Spring Controller 将编码对象放入 ModelMap 以从您的 JSP 检索值。

  • 参见 this simple tutorial JAXB 将 XML 转换为 Java POJO 的基本示例,反之亦然。
  • 参见 this tutorial了解如何将对象从 Spring Controller 传递到 JSP

但是,如果您的首要任务是使用 已经可用的库,那么您可以使用 Java 标准 DocumentBuilder将 XML 解析为 Document并按名称获取标签 NodeList收藏:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(xml)));
NodeList lastMetrics = doc.getElementsByTagName("LastMetricData");

关于xml - 使用 Spring/Tomcat 的库来解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19028005/

相关文章:

Spring扩展PagingAndSortingRepository排序顺序

java - Tomcat/Spring boot 重新加载 META-INF/resources/jsp 文件(实时更新)

c# - XML 字符串到 DataGridView

Android XML 布局文件和命名空间

android - 9patch 图像拉伸(stretch)不正确

java - 本地服务器登录putty

java - 关于自定义JSP标签库的问题

java - 根据正则表达式,Castor 未将值识别为有效

java - Spring session bean管理

java - 如何使用相同的方法和不同的 header 来简化 REST Controller ?