DOM解析XML文档
来源:互联网 发布:淘宝联盟淘口令转换 编辑:程序博客网 时间:2024/04/28 13:36
本文由上海it培训网站提供,转载请注明。
package com.softeem.xml.util;
import java.io.File;import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;
import com.softeem.xml.dto.ClassDTO;
import com.softeem.xml.dto.CollegeDTO;
import com.softeem.xml.dto.StudentDTO;
public class DOMParseXML {
public static void main(String[] args) throws Exception {
String path = "D:/stus.xml";
CollegeDTO c = parseXML(path);
//获取信息打印
System.out.println(c.getClasses().get("计科1班").getStus().get("20111114").getStuName());
}
public static CollegeDTO parseXML(String path){
CollegeDTO college = null;
try {
//dom解析,更多精彩请移步至上海java培训官网
//①加载被解析的xml文件
//通过工厂类创建DocumentBuilder类的对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//调用DocumentBuilder类中的parse方法,加载一个xml文件
//dom对象就相当于一个xml文件
Document dom = builder.parse(new File(path));
//②将dom对象中加载的xml文件的数据,有顺序的取出来
//Document类中的getDocumentElement()方法:获取到xml文件的根标签
Element root = dom.getDocumentElement();
//1.获取元素属性
//Element类中的getAttribute方法:从当前element对象元素中,根据属性名取到属性值
//System.out.println(root.getTagName());
//NodeList ns = root.getElementsByTagName("class");***********
String cid = root.getAttribute("id");
String cname = root.getAttribute("name");
//2.获取元素的子标签
NodeList nodes = root.getChildNodes();
//System.out.println(nodes.getLength());
Map<String, ClassDTO> classes = new HashMap<String, ClassDTO>();
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
String nodeName = node.getNodeName();
//String nodeValue = node.getNodeValue();
//int nodeType = node.getNodeType();//返回short型变量
if("class".equals(nodeName)){
// NamedNodeMap map = node.getAttributes();
// Node attr = map.getNamedItem("className");
// String className = attr.getNodeValue();
String className = node.getAttributes().getNamedItem("className").getNodeValue();
String cnum = node.getAttributes().getNamedItem("classNum").getNodeValue();
//获取节点的子节点
NodeList ns2 = node.getChildNodes();
Map<String, StudentDTO> stus = new HashMap<String, StudentDTO>();
for (int j = 0; j < ns2.getLength(); j++) {
Node n = ns2.item(j);
if("student".equals(n.getNodeName())){
String snum = n.getAttributes().getNamedItem("stuNum").getNodeValue();
String sname = n.getAttributes().getNamedItem("stuName").getNodeValue();
String ssex = n.getAttributes().getNamedItem("stuSex").getNodeValue();
String sage = n.getAttributes().getNamedItem("stuAge").getNodeValue();
//放进dto
StudentDTO stu = new StudentDTO(snum, sname, ssex, Integer.parseInt(sage));
stus.put(snum, stu);//放一个stu
}
}
ClassDTO cla = new ClassDTO(className, Integer.parseInt(cnum), stus);
classes.put(className, cla);
}
}
college = new CollegeDTO(Integer.parseInt(cid),cname,classes);
} catch (Exception e) {
System.err.println("出现错误!");
}
return college;
}
}
<!--stus.xml文件-->
<?xml version="1.0" encoding="UTF-8"?>
<college id="1001" name="">
<class className="计科1班" classNum="41">
<student stuNum="20111111" stuName="" stuSex="男" stuAge="20" />
<student stuNum="20111112" stuName="" stuSex="男" stuAge="21" />
<student stuNum="20111113" stuName="" stuSex="女" stuAge="20" />
<student stuNum="20111114" stuName="" stuSex="男" stuAge="19" />
</class>
<class className="网工1班" classNum="49">
<student stuNum="20112111" stuName="" stuSex="男" stuAge="21" />
<student stuNum="20112112" stuName="" stuSex="男" stuAge="20" />
<student stuNum="20112113" stuName="" stuSex="女" stuAge="22" />
</class>
</college>
0 0
- Dom解析XML文档
- DOM 解析 XML 文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- DOM解析XML文档
- Dom解析XMl文档
- DOM解析XML文档
- dom解析XML文档
- DOM解析XML文档
- dom解析xml文档
- DOM解析XML文档
- DOM解析XML文档
- 使用DOM解析XML文档
- DOM、SAX解析xml文档
- 使用DOM解析XML文档
- java dom解析XML文档
- php查询mysql,返回json格式数据
- eclipse中tomcat相关问题
- hdu 4767 bell 中国剩余定理+矩阵快速幂
- Android Framework的启动过程
- android安全问题(五) 抢先拦截短信 - 结果篇
- DOM解析XML文档
- poj 2935 Basic Wall Maze
- javascrip数组操作方法
- ubuntu 修改启动顺序
- fcntl文件锁
- OC字符串方法总结
- Objective-C语法快速参考
- ApplicationDomain和getDefinition
- Open Wifi SSID Broadcast vulnerability