servlet 代码
response.setContentType("text/xml");
response.setCharacterEncoding("utf-8");
String pid=request.getParameter("pid");
cd=new CityDao();
List citylist=cd.selectByPID(pid);
StringBuffer sb=new StringBuffer();
sb.append("<citys>");
for(int i=0;i<citylist.size();i++)
{
CityDict item=new CityDict();
item=(CityDict)citylist.get(i);
sb.append("<city><id>"+item.getCityID()+"</id><name>"+item.getCityName()+"</name></city>");
}
sb.append("</citys>");
System.out.println(sb.toString());
OutputStreamWriter osw=null;
ServletOutputStream sos=null;
try {
sos=response.getOutputStream();
 osw=new OutputStreamWriter(sos);
osw.write(sb.toString());
sos.flush();
osw.flush();
jsp部分 :
var alme =xmlHttp.responseXML.getElementsByTagName('city');
        alert(xmlHttp.responseText);xml 的格式是对的而且ctiy元素有子接点
        alert(alme.length);这输出为零当 alert(xmlHttp.responseXML.xml);//弹出空白 可以判断没有XML??       
         如果我把serlvet 部分的代码改成:
       response.setCharacterEncoding("utf-8");这行删掉
       在osw=new OutputStreamWriter(sos); 该成osw=new OutputStreamWriter(sos,"utf-8");
这次前台执行alert(xmlHttp.responseXML.xml); 时就有数据了  
希望高手请教下小弟