Java 在JSP页面中解析基于xml的web服务响应的正确方法是什么。。。?

Java 在JSP页面中解析基于xml的web服务响应的正确方法是什么。。。?,java,web-services,jsp,Java,Web Services,Jsp,我不熟悉Web服务。我想在jsp页面中呈现Web服务响应。 下面是webservice url返回的响应 URL : https://www.domain.com/webservice/pendingbooks?studentNo=123456 XML Response: <?xml version='1.0' encoding='ISO-8859-1'?> <books> <booksnotreturned> &

我不熟悉
Web服务
。我想在jsp页面中呈现Web服务响应。 下面是webservice url返回的响应

URL : https://www.domain.com/webservice/pendingbooks?studentNo=123456 

XML Response:

    <?xml version='1.0' encoding='ISO-8859-1'?>
    <books>
    <booksnotreturned>
        <booksdetails>
            <bookno>123545</bookno>
            <issueddate>16-12-2013</issueddate>
            <duedate>30-01-2014</duedate>
            <amt>1000</amt>
        </booksdetails>
       <booksdetails>
            <bookno>123546</bookno>
            <issueddate>15-12-2013</issueddate>
            <duedate>30-02-2014</duedate>
            <amt>2000</amt>
        </booksdetails>
        <booksdetails>
            <bookno>123547</bookno>
            <issueddate>17-12-2013</issueddate>
            <duedate>25-02-2014</duedate>
            <amt>3000</amt>
        </booksdetails>    
    </booksnotreturned>
    <totaloutstanding>6000</totaloutstanding>
    <bookscount>3</bookscount>
</books>
URL:https://www.domain.com/webservice/pendingbooks?studentNo=123456 
XML响应:
123545
16-12-2013
30-01-2014
1000
123546
15-12-2013
30-02-2014
2000
123547
17-12-2013
25-02-2014
3000
6000
3.
我想显示的结果是表格格式…如何做到这一点

更新:这就是我所尝试的

 $.ajax({
         type: "get",
         url: serviceURL,
         dataType: "text",
         crossDomain: true,
         success: function (data) {
             alert("success");
             var xmlDoc = $.parseXML(data); // then parse into xml
             var xml = $(xmlDoc);

             var rootTag = xml.find("booksdetails");

             $("#output").append("\
                   <tr class=mainheading>\n\
                     <td colspan=6 class=heading>Book Details</td>\n\
                   </tr>\n\
                   <tr class=heading1>\n\
                    <th>Book Number</th>\n\
                    <th>Issued Date</th>\n\
                    <th>Due Date</th>\n\
                    <th>Amount</th>\n\
                  </tr>");
             rootTag.each(function () {
                   var bookno = $(this).find('bookno').text();
                   var issueddate = $(this).find('issueddate').text();
                   var duedate = $(this).find('duedate').text();
                   var amt = $(this).find('amt').text();                           
                  $("#output").append('<tr><td>' + bookno + '</td><td>' + issueddate + '</td><td>' + duedate + '</td><td>' + amt + '</td></tr>');
           });
         },
         error: function () {
               alert("Error");
        }
      });
$.ajax({
键入:“获取”,
url:serviceURL,
数据类型:“文本”,
跨域:是的,
成功:功能(数据){
警惕(“成功”);
var xmlDoc=$.parseXML(数据);//然后解析为xml
var xml=$(xmlDoc);
var rootTag=xml.find(“booksdetails”);
$(“#输出”)。追加(”\
\n\
书籍详细信息\n\
\n\
\n\
书号\n\
发布日期\n\
截止日期\n\
金额\n\
");
rootTag.each(函数(){
var bookno=$(this.find('bookno').text();
var issueddate=$(this.find('issueddate').text();
var duedate=$(this.find('duedate').text();
var amt=$(this.find('amt').text();
$(“#输出”)。追加(“”+账簿编号+“”+发行日期+“”+到期日+“”+金额+“”);
});
},
错误:函数(){
警报(“错误”);
}
});

有多种选择。我假设(因为您没有提到)此调用是由web浏览器发出的,浏览器需要对其进行解析以显示HTML表

在本例中,我将使用xslt处理器(例如)将转换为HTML片段。然后可以将该片段注入到HTML DOM中进行显示。(如果您实际上是在JSP中进行调用,那么您可以使用xsl处理器在它进入浏览器之前做同样的事情)

可能有效的xsl模板可能如下所示:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="booksnotreturned/booksdetails">
  <tr>
    <td><xsl:select value="bookno/text()"/></td>
    <td><xsl:select value="issuedate/text()"/></td>
    <td><xsl:select value="duedate/text()"/></td>
    <td><xsl:select value="amt/text()"/></td>
  </tr>
</xsl:template>
<xsl:template match="/">
  <table>
    <xsl:apply-templates/>
  </table>
</xsl:template>

</xsl:stylesheet>


是的,我正在使用$.ajax()调用从jsp页面调用webservice url,我在上面代码中尝试了成功方法。它可以工作,但会让人头疼,因为xml结果很复杂。这是正确的使用方法吗?但如果您不知道xml内容或内容更改了怎么办?是的,您的代码会让人头疼。构建XML树行者比使用XSLT编写模板复杂得多。我建议您访问xsltjs网站,了解如何使用它的详细信息。关于你的第二个问题。。。对web服务有一定的期望。如果您不能信任来自web服务的内容,那么您必须在尝试解析或显示结构之前实现逻辑来测试结构。