javascript对xml的解析
function selectProv(field) {
var xmlHttp = null;
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "${pageContext.request.contextPath}/servlet/SelectProvServlet?regionId=" + trim(field.value) + "&time=" + new Date().getTime();
//设置请求方式为GET,设置请求的URL,设置为异步提交
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange=function() {
//Ajax引擎状态为成功
if (xmlHttp.readyState == 4) {
//HTTP协议状态为成功
if (xmlHttp.status == 200) {
var doc = xmlHttp.responseXML;
var items = doc.getElementsByTagName("item");
//取得省下拉列表
var provSelect = document.getElementById("province");
//清除省下拉列表中的值
provSelect.options.length = 0;
var o = new Option("--全部--", 0);
provSelect.add(o);
for (var i=0; i<items.length; i++) {
//var id = items[i].childNodes[0].childNodes[0].nodeValue;
//var name = items[i].childNodes[1].childNodes[0].nodeValue;
var id = items[i].childNodes[0].firstChild.nodeValue;
var name = items[i].childNodes[1].firstChild.nodeValue;
//alert(id + "," + name);
//构造下拉列表的Option对象
var o = new Option(name, id);
//向下拉列表中添加选项
provSelect.add(o);
}
}else {
alert("请求失败,错误码=" + xmlHttp.status);
}
}
};
//将设置信息发送到Ajax引擎
xmlHttp.send(null);
}
---------------------------------------------------------------------------------------------------------------------------------
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import com.bjpowernode.drp.basedata.manager.ClientManager;
/**
* 下拉联动,根据区域代码选择省
* @author Administrator
*
*/
public class SelectProvServlet extends HttpServlet {
/*
1、自定义格式
10023,吉林省#10025,辽宁省#10026,黑龙江
2、XML格式
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item>
<id>10023</id>
<name>吉林省</name>
</item>
<item>
<id>10025</id>
<name>辽宁省</name>
</item>
<item>
<id>10026</id>
<name>黑龙江</name>
</item>
</items>
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/xml;charset=UTF-8");
int regionId = Integer.parseInt(request.getParameter("regionId"));
if (regionId != 0) {
Map<Integer, String> map = ClientManager.getInstance().getProvByRegionId(regionId);
Document doc = DocumentHelper.createDocument();
Element rootElt = doc.addElement("items");
for (Iterator<Map.Entry<Integer, String>> iter=map.entrySet().iterator(); iter.hasNext();) {
Map.Entry<Integer, String> entry = iter.next();
Element itemElt = rootElt.addElement("item");
Element idElt = itemElt.addElement("id");
idElt.setText(String.valueOf(entry.getKey()));
Element nameElt = itemElt.addElement("name");
nameElt.setText(entry.getValue());
}
String xmlString = doc.asXML();
System.out.println(xmlString);
response.getWriter().print(xmlString);
}
}
}