Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jsp页面获取xml数据_Java_Xml_Jsp - Fatal编程技术网

Java 如何使用jsp页面获取xml数据

Java 如何使用jsp页面获取xml数据,java,xml,jsp,Java,Xml,Jsp,需要用jsp页面显示xml响应。我正在获取xml对象“vehicleOrderResponse”的对象,若我将在新文件中显示该对象,那个么xml将成功显示,但不会在jsp页面中获取xml数据。提供在jsp页面中显示xml响应的任何代码 Jsp页面代码: try { SAMSServiceAdaptor serviceadaptor = new SAMSServiceAdaptor(); VehicleOrderDetailReque

需要用jsp页面显示xml响应。我正在获取xml对象“vehicleOrderResponse”的对象,若我将在新文件中显示该对象,那个么xml将成功显示,但不会在jsp页面中获取xml数据。提供在jsp页面中显示xml响应的任何代码

Jsp页面代码:

try
        {
            SAMSServiceAdaptor serviceadaptor = new SAMSServiceAdaptor();
            VehicleOrderDetailRequestType vehicleOrderDetailRequest = serviceadaptor.createRequest(
                    vin, bodyCode, dealerCode, ordernumber, modelYear);
            vehicleOrderResponse = SAMSServiceLocator.getSAMSServicePort().retrieveVehicleOrderDetail(vehicleOrderDetailRequest);
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            JAXBContext context = JAXBContext
                        .newInstance(VehicleOrderDetailResponseType.class);
            Marshaller marshaller = context.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                        true);
            marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
            marshaller.marshal(vehicleOrderResponse, bytes);
            String sb = new String(bytes.toByteArray());
            String responseXML = sb.trim();
            if(responseXML!=null){
                out.println(responseXML.trim().substring("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>".length()));    
            }else{
                    out.println("Response was null, Please check input paramters! ");
                }

        }
        catch(Exception ex)
        {
            out.println(ex.toString());
        }
String responseXML = new String(bytes.toByteArray()).trim();
if (responseXML != null) {
    request.setAttribute("responseXML", responseXML.substring(
            "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>".length()));
}
试试看
{
SamsServiceAdapter ServiceAdapter=新的SamsServiceAdapter();
VehicleOrderDetailRequestType vehicleOrderDetailRequest=ServiceAdapter.createRequest(
vin、车身代码、经销商代码、订单号、年款);
vehicleOrderResponse=SAMSServiceLocator.getSAMSServicePort().retrieveVehicleOrderDetail(vehicleOrderDetailRequest);
ByteArrayOutputStream字节=新建ByteArrayOutputStream();
JAXBContext context=JAXBContext
.newInstance(VehicleOrderDetailResponseType.class);
Marshaller=context.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,
正确的);
setProperty(marshaller.JAXB_编码,“UTF-8”);
marshaller.Marshall(vehicleOrderResponse,字节);
String sb=新字符串(bytes.toByteArray());
字符串responseXML=sb.trim();
if(responseXML!=null){
out.println(responseXML.trim()子字符串(“.length());
}否则{
println(“响应为空,请检查输入参数!”);
}
}
捕获(例外情况除外)
{
out.println(例如toString());
}
文件中的Xml响应:-

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:VehicleOrderType xmlns="urn:ford/interface/VehicleOrder/UnitDetail/v2" xmlns:ns2="urn:ford/VehicleOrder/UnitDetail/v2.0">
    <VehicleOrder>
        <ModelYear>2014</ModelYear>
        <Dealer>13058</Dealer>
        <Body>P8J</Body>
        <ItemNo>445S  </ItemNo>
        <Vin>1ZVBP8JZ3E5223527</Vin>
        <Division>F                             </Division>
        <GsdbSiteCode>G9W1A</GsdbSiteCode>
        <CurrentBuildWeek>2013-04-01Z</CurrentBuildWeek>
        <ReceiptDate>2013-03-07Z</ReceiptDate>
        <VehicleLineDescription>Mustang</VehicleLineDescription>
        <BodyDescription>P8J Coupe Shelby GT500</BodyDescription>
        <Status>
            <ns2:Status>Sold                          </ns2:Status>
            <ns2:StatusDateTime>2013-05-04T04:00:00.000Z</ns2:StatusDateTime>
        </Status>
    </VehicleOrder>
</ns2:VehicleOrderType>

2014
13058
P8J
445S
1ZVBP8JZ3E5223527
F
G9W1A
2013-04-01Z
2013-03-07Z
野马
P8J双门轿跑车谢尔比GT500
出售
2013-05-04T04:00:00.000Z

您可以通过在

<pre>
    <%
      // your existing code
    %>
</pre>
然后,最后在JSP中使用JSTL的
标记。这将为您自动转义XML



在JSPRights中使用JSTL而不是Scriptlet单击浏览器中的JSP页面并查看源代码。仔细看看。就在那里。它只是字面上被解释为JSP的HTML输出的一部分。但是,没有一个XML元素是有效的HTML(如

等),因此浏览器在显示期间会忽略它们。也许您想显示预格式化的XML?或者您想显示转义的XML HTML?是的,在页面源代码中找到了XML数据,但是如何在jsp中返回XML数据,任何可以帮助我的代码?无需显示预格式化的xml。
<p>
    <c:out value="${responseXML}" />
</p>