gpt4 book ai didi

java - 如何解决XML转换问题?

转载 作者:行者123 更新时间:2023-12-01 05:25:43 26 4
gpt4 key购买 nike

大家好,我在我的项目中使用 Ajax 在一个选择框中加载产品名称,并在选择框 onchange 事件中使用商店名称的 onselect 事件。这里我使用 Ajax 来获取从 java 操作类到 jsp 的列表。我在Jsp和Action类中的代码如下。

 <s:label value="Store Name : *" />                                                                        
<s:select name="storeName" list="storeList" onchange="loadProduct(this.value)" listKey="storeId" listValue="storeName" headerKey="-1" headerValue="Select the Store" />

<s:label value="Product Name : *" />
<s:select name="productName" list="productList" listKey="productId" listValue="productName" />


function loadProduct(id){
var URL = "AjaxPopMyCycle.action?storeName="+id;
ajaxEditFunctionCall(URL);

}

function ajaxEditFunctionCall(URL){
try{
xmlHttp=new XMLHttpRequest();
}catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
if (xmlHttp.status == 200) {
if(xmlHttp.responseXML != null ){
showMessage(xmlHttp.responseXML);
}
}
}
}
xmlHttp.open("GET", URL, true);
xmlHttp.send(URL);
}
function showMessage(errorDisplayXML){
var checklist=document.Add.productName;
checklist.options.length=0;
if(xmlHttp.readyState==4){

if(errorDisplayXML.getElementsByTagName("rootElement")[0]!=null){
var rootElement = errorDisplayXML.getElementsByTagName("rootElement")[0];
var location = rootElement.getElementsByTagName("Message");
var locArr = location[0];
var locArr = " ";
var tempArr;
var tempArr1;
for(var i=0; i<location.length; i++){
tempArr = "";
tempArr1 = "";
locArr = location[i];
tempArr = locArr.getElementsByTagName("productId")[0].firstChild.nodeValue;
tempArr1 = locArr.getElementsByTagName("productnName")[0].firstChild.nodeValue;
checklist.options[i]= new Option(tempArr1,tempArr);
}
}else{
alert("errorDisplayXML Contains NULL");
}
}
}

Action 类中的以下代码用于获取结果并加载到 XML 中,如下所示。

detailedList包含数据库中与商店相关的产品列表。

public String getDetails(List detailedList)throws Exception{

Element tempElem = null,
rootElem = null;
Text textElem = null;
document=new org.dom4j.dom.DOMDocument();
rootElem = document.createElement("rootElement");
Element errorElement = null;
List saveList = new ArrayList();
saveList = detailedList;
System.out.println("DetailedList:"+saveList.size());
if(saveList.size()>0){
try {
for(int i=0;i<saveList.size();i++){

Product aproduct = (Product )saveList.get(i);
errorElement = document.createElement("Message");

tempElem = document.createElement("productId");
textElem = document.createTextNode(aproduct .getProductId());
tempElem.appendChild(textElem);
errorElement.appendChild(tempElem);

tempElem = document.createElement("productName");
textElem = document.createTextNode(aproduct.getProductName());
tempElem.appendChild(textElem);
errorElement.appendChild(tempElem);

rootElem.appendChild(errorElement);
}
}catch (Exception e) {
tempElem = document.createElement("Message");
return parseToString(tempElem);
}


return parseToString(rootElem);
}

public String parseToString(Element node) throws Exception {

OutputFormat format = new OutputFormat();
StringWriter stringOut = new StringWriter();
XMLSerializer serial = new XMLSerializer(stringOut,format);

serial.asDOMSerializer();
serial.serialize(node);
return stringOut.toString();

}

我已在我的操作类中导入了以下包。

导入org.w3c.dom.Document;

导入org.w3c.dom.Element;

导入org.w3c.dom.Text;

导入com.sun.org.apache.xml.internal.serialize.OutputFormat;

导入com.sun.org.apache.xml.internal.serialize.XMLSerializer;

在过去 3 周内,它运行良好,功能正确。

但它没有在我的服务器中进行编译并显示以下错误消息。

C:\Users\Desktop\Updated\Project\src\main\java\com\action\AjaxAction.java:[199,5] com.sun.org.apache.xml.internal.serialize.XMLSerializer 是 Sun 专有的 API,可能会在未来的版本中删除

C:\Users\Desktop\Updated\Project\src\main\java\com\action\AjaxAction.java:[199,32] com.sun.org.apache.xml.internal.serialize.XMLSerializer 是 Sun 专有的 API,可能会在未来的版本中删除

我的项目使用Struts2、Jsp、Hibernate3作为前端,Mysql服务器作为后端。我不知道如何解决这个问题。

任何人都可以帮我解决这个问题。提前致谢!!!.

最佳答案

使用org.apache.xml.serialize.XMLSerializer也可以避免该错误。从 xercesImpl-2.7.1.jar 导入此类 并在 parseToString() 中使用,如下所示:

import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;

public String parseToString(Element node) throws Exception {
OutputFormat format = new OutputFormat();
java.io.Writer stringOut = new StringWriter();
XMLSerializer serial = new XMLSerializer(stringOut,format);
serial.serialize(node);
return stringOut.toString();
}

关于java - 如何解决XML转换问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9696870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com