-1

我不是开发人员,也不是临时拿起东西,但有一个小问题。我正在做的应用程序很简单。我对 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 框架库,如果我不需要,使用任何其他库似乎很愚蠢。

我基本上需要做的就是获取资源名称、度量名称、时间戳和值……根据值将它们打印在表格或某种交通信号灯中。

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

请帮助菜鸟:)

4

1 回答 1

1

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

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

然后,您可以从 Spring 控制器将编组的对象放入ModelMap以从 JSP 中检索值。

  • 有关将 XML 转换为 Java POJO 或反之亦然的 JAXB 基本 示例,请参阅此简单教程。
  • 请参阅本教程 以了解如何将对象从 Spring 控制器传递到 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");
于 2013-09-26T12:35:54.427 回答