Java 如何使用jsp页面获取xml数据
需要用jsp页面显示xml响应。我正在获取xml对象“vehicleOrderResponse”的对象,若我将在新文件中显示该对象,那个么xml将成功显示,但不会在jsp页面中获取xml数据。提供在jsp页面中显示xml响应的任何代码 Jsp页面代码: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
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>