展开全部
xml结构
本方案用来解决XML根据父节点的属性得到指定子节点的属性的值
需要的jar包:
jar包本方案的xml结构为以下格式62616964757a686964616fe58685e5aeb931333431366338:看图
packagecom.itqingyou.xml;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.List;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.dom4j.Attribute;
importorg.dom4j.Document;
importorg.dom4j.DocumentException;
importorg.dom4j.Element;
importorg.dom4j.io.SAXReader;
publicclassCityXMLServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
@SuppressWarnings("unchecked")
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("utf-8");
response.setContentType("text/xml;charset=utf-8");//发送xml这里要修改
/*
*获取省份名称,加载该省对应的元素把元素转换成字符串发送非客户端
*
*1.获取省份名称2.使用省份名称查找对应的元素3.再把元素转换成字符串发送!
*
*/
try{
/*
*得到Document
*/
SAXReaderreader=newSAXReader();
InputStreaminput=this.getClass().getResourceAsStream("/China.xml");
Documentdoc=reader.read(input);
/*
*获取参数
*/
Stringpname=request.getParameter("pname");//获取省份名称
System.out.println(pname);
//ElementproEle=
//(Element)doc.selectSingleNode("//province[@name='"+pname+"']"+"//city[]");
ElementproEle=(Element)doc.selectSingleNode("//province[@name='"+pname+"']");
//ListarrList=
//doc.selectNodes("//province[@name="+pname+"']/city/@name");
这里是重点指定父节点后,再得到字节点的指定属性
ListarrList=doc.selectNodes("//province[@name='"+pname+"']/"+"city/@name");
StringBuildersb=newStringBuilder();
for(inti=0;i
sb.append(arrList.get(i).getValue());//把每个属性的值存放到sb中
if(i
sb.append(",");
}
}
response.getWriter().print(sb);
System.out.println(sb);
//Stringvalue=arrList.get(1).getValue();
//System.out.println(value);
StringasXML=proEle.asXML();//把元素转换成字符串
//System.out.println(asXML);
//response.getWriter().print(asXML);
}catch(DocumentExceptione){
e.printStackTrace();
}
}
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
id:清幽
需要jar包可以回复我