xml结构
本方案用来解决XML根据父节点的属性得到指定子节点的属性的值
需要的jar包:
jar包
本方案的xml结构为以下格式:看图
package com.itqingyou.xml;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class CityXMLServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/xml;charset=utf-8");// 发送xml这里要修改
/*
* 获取省份名称,加载该省对应的元素 把元素转换成字符串发送非客户端
*
* 1.获取省份名称 2.使用省份名称查找对应的元素 3.再把 元素转换成字符串发送!
*
*/
try {
/*
* 得到Document
*/
SAXReader reader = new SAXReader();
InputStream input = this.getClass().getResourceAsStream("/China.xml");
Document doc = reader.read(input);
/*
* 获取参数
*/
String pname = request.getParameter("pname");// 获取省份名称
System.out.println(pname);
// Element proEle =
// (Element)doc.selectSingleNode("//province[@name='"+pname+"']"+"//city[]");
Element proEle = (Element) doc.selectSingleNode("//province[@name='" + pname + "']");
// ListarrList =
// doc.selectNodes("//province[@name="+pname+"']/city/@name");
////这里是重点指定父节点后,再得到字节点的指定属性
ListarrList = doc.selectNodes("//province[@name='" + pname + "']/" + "city/@name");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arrList.size(); i++) {
sb.append(arrList.get(i).getValue());// 把每个属性的值存放到sb中
if (i < arrList.size() - 1) {
sb.append(",");
}
}
response.getWriter().print(sb);
System.out.println(sb);
// String value = arrList.get(1).getValue();
// System.out.println(value);
String asXML = proEle.asXML();// 把元素转换成字符串
// System.out.println(asXML);
// response.getWriter().print(asXML);
} catch (DocumentException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
id:清幽
需要jar包可以回复我
XmlDocument xmlDoc = new XmlDocument();
// 载入xml文件
xmlDoc.Load("1.xml");
// 找到type='C004'的doc节点
XmlNode node = xmlDoc.SelectSingleNode("//doc[@type='C004']");
// 找到doc的父节点
XmlNode pnode = node.ParentNode;
遍历节点:
foreach (XmlNode nd in xmlDoc.DocumentElement.ChildNodes)
{ // nd 遍历所有docctrl节点
if (nd.hasChildNodes)
{
foreach (XmlNode n in nd.ChildNodes)
{ // n 遍历所有doc和ctrl节点
string stype = n.Attributes["type"].Value;
string s = n.InnerText; // 节点的值
}
}
}