2.JASP_DOM解析xml基本思路总结
2015-08-02 12:59
573 查看
第一步:
确定需要解析xml文件
第二步:
创建bean,要和xml里的字段名相同
第三步:
创建util工具类,所包含的方法基本定了,如下所示:
public static Document getdocument()
throws ParserConfigurationException,
Exception,
IOException {
// 1,得到解析工厂
DocumentBuilderFactory factory
= DocumentBuilderFactory.newInstance();
// 2,得到解析器
DocumentBuilder builder =
factory.newDocumentBuilder();
// 3,解析指定的xml文档
Document doc =
builder.parse("src/exam.xml");
return doc;
}
// 把内存中的Document
树写回xml
public static void writexml(Document document)
throws Exception {
TransformerFactory facotry =
TransformerFactory.newInstance();
Transformer ts =
facotry.newTransformer();
ts.transform(new
DOMSource(document), new StreamResult("src/exam.xml"));
}
第四步:
创建dao(Data Acess Object)
,实现操作方法(比如增,删,查),基本如下示例:
public boolean createStudent(Student student)
{
boolean flag =
false;
try {
// 得到document
对象
Document doc
= Studentutil.getdocument();
// 1创建name
,location,grade元素并设置主题内容
Element nameE
= doc.createElement_x_x("name");
nameE.setTextContent(student.getName());
Element
locationE = doc.createElement_x_x("location");
locationE.setTextContent(student.getLocation());
Element
gradeE = doc.createElement_x_x("grade");
gradeE.setTextContent(student.getGrad());
//
2创建student元素,并设置其属性
Element
studentE = doc.createElement_x_x("student");
studentE.setAttribute("idcard",
student.getIdcard());
studentE.setAttribute("examid",
student.getExamid());
//
给student加孩子节点
studentE.a(nameE);
studentE.a(locationE);
studentE.a(gradeE);
//
3得到exam 元素 ,将student挂到上面
Node node =
doc.getElementsByTagName_r("exam").item(0);
node.a(studentE);
//
4写入xml
Studentutil.writexml(doc);
flag =
true;
}
catch (Exception e) {
// TODO
Auto-generated catch block
// throw new
RuntimeException();// 异常转义
System.out.println("createStudent-------出错了");
}
return flag;
}
public Student findStudent(String examid) {
Student s = null;
try
{
//
得到document对象
Document doc
= Studentutil.getdocument();
//
1得到所有的student元素
NodeList nl =
doc.getElementsByTagName_r("student");
//
2遍历所有的student元素,与参数进行比较
for (int i =
0; i < nl.getLength(); i++) {
Node
node = nl.item(i);
if
(node instanceof Element) {
Element
e = (Element) node;
if
(e.getAttribute("examid").equals(examid)) {
//
3如果匹配,找到学生,创建学生对象
s
= new Student();
//
4设置学生的各个属性的取值
s.setExamid(e.getAttribute("examid"));
s.setIdcard(e.getAttribute("idcard"));
s.setName(e.getElementsByTagName_r("name").item(0)
.getTextContent());
s.setLocation(e.getElementsByTagName_r("location")
.item(0).getTextContent());
s.setGrad(e.getElementsByTagName_r("grade").item(0)
.getTextContent());
}
}
}
}
catch (Exception e) {
// TODO
Auto-generated catch block
System.out.println("findStudent-------出错了");
}
return
s;
}
public boolean deleteStuent(String name) {
boolean flag =
false;
try
{
// 得到document
对象
Document doc
= Studentutil.getdocument();
//
1得到所有name元素
NodeList nl =
doc.getElementsByTagName_r("name");
//
2遍历name元素是否和参数一致
for (int i =
0; i < nl.getLength(); i++) {
//
3如果一直 ,删除父节点
Node
n = nl.item(i);
if
(n.getTextContent().equals(name)) {
//
删除父节点
n.getParentNode().getParentNode()
.removeChild(n.getParentNode());
//
4写入xml
Studentutil.writexml(doc);
flag
= true;
break;
}
}
}
catch (Exception e) {
// TODO
Auto-generated catch block
System.out.println("deleteStuent-------出错了");
}
return
flag;
}
第五步:
实现调用即可
重在练习!多敲敲!记住!
确定需要解析xml文件
第二步:
创建bean,要和xml里的字段名相同
第三步:
创建util工具类,所包含的方法基本定了,如下所示:
public static Document getdocument()
throws ParserConfigurationException,
Exception,
IOException {
// 1,得到解析工厂
DocumentBuilderFactory factory
= DocumentBuilderFactory.newInstance();
// 2,得到解析器
DocumentBuilder builder =
factory.newDocumentBuilder();
// 3,解析指定的xml文档
Document doc =
builder.parse("src/exam.xml");
return doc;
}
// 把内存中的Document
树写回xml
public static void writexml(Document document)
throws Exception {
TransformerFactory facotry =
TransformerFactory.newInstance();
Transformer ts =
facotry.newTransformer();
ts.transform(new
DOMSource(document), new StreamResult("src/exam.xml"));
}
第四步:
创建dao(Data Acess Object)
,实现操作方法(比如增,删,查),基本如下示例:
public boolean createStudent(Student student)
{
boolean flag =
false;
try {
// 得到document
对象
Document doc
= Studentutil.getdocument();
// 1创建name
,location,grade元素并设置主题内容
Element nameE
= doc.createElement_x_x("name");
nameE.setTextContent(student.getName());
Element
locationE = doc.createElement_x_x("location");
locationE.setTextContent(student.getLocation());
Element
gradeE = doc.createElement_x_x("grade");
gradeE.setTextContent(student.getGrad());
//
2创建student元素,并设置其属性
Element
studentE = doc.createElement_x_x("student");
studentE.setAttribute("idcard",
student.getIdcard());
studentE.setAttribute("examid",
student.getExamid());
//
给student加孩子节点
studentE.a(nameE);
studentE.a(locationE);
studentE.a(gradeE);
//
3得到exam 元素 ,将student挂到上面
Node node =
doc.getElementsByTagName_r("exam").item(0);
node.a(studentE);
//
4写入xml
Studentutil.writexml(doc);
flag =
true;
}
catch (Exception e) {
// TODO
Auto-generated catch block
// throw new
RuntimeException();// 异常转义
System.out.println("createStudent-------出错了");
}
return flag;
}
public Student findStudent(String examid) {
Student s = null;
try
{
//
得到document对象
Document doc
= Studentutil.getdocument();
//
1得到所有的student元素
NodeList nl =
doc.getElementsByTagName_r("student");
//
2遍历所有的student元素,与参数进行比较
for (int i =
0; i < nl.getLength(); i++) {
Node
node = nl.item(i);
if
(node instanceof Element) {
Element
e = (Element) node;
if
(e.getAttribute("examid").equals(examid)) {
//
3如果匹配,找到学生,创建学生对象
s
= new Student();
//
4设置学生的各个属性的取值
s.setExamid(e.getAttribute("examid"));
s.setIdcard(e.getAttribute("idcard"));
s.setName(e.getElementsByTagName_r("name").item(0)
.getTextContent());
s.setLocation(e.getElementsByTagName_r("location")
.item(0).getTextContent());
s.setGrad(e.getElementsByTagName_r("grade").item(0)
.getTextContent());
}
}
}
}
catch (Exception e) {
// TODO
Auto-generated catch block
System.out.println("findStudent-------出错了");
}
return
s;
}
public boolean deleteStuent(String name) {
boolean flag =
false;
try
{
// 得到document
对象
Document doc
= Studentutil.getdocument();
//
1得到所有name元素
NodeList nl =
doc.getElementsByTagName_r("name");
//
2遍历name元素是否和参数一致
for (int i =
0; i < nl.getLength(); i++) {
//
3如果一直 ,删除父节点
Node
n = nl.item(i);
if
(n.getTextContent().equals(name)) {
//
删除父节点
n.getParentNode().getParentNode()
.removeChild(n.getParentNode());
//
4写入xml
Studentutil.writexml(doc);
flag
= true;
break;
}
}
}
catch (Exception e) {
// TODO
Auto-generated catch block
System.out.println("deleteStuent-------出错了");
}
return
flag;
}
第五步:
实现调用即可
重在练习!多敲敲!记住!
相关文章推荐
- 3.利用jasp进行dom方式解析
- 【asp.net】验证控件
- asp.net+swfupload 多图片批量上传(附源码下载)
- ASP.NET - 禁用ViewState
- ASP.NET、WinForm - 判断整个页面文本框是否为空
- 一个树莓派raspberry pi 操作系统开发网站
- ASP.NET MVC 小牛之旅2:体验第一个MVC程序
- 全7 天玩转 ASP.NET MVC — 第 2 天
- ASP.NET GridView里操作DropDownList
- ASP.net 路径问题 详解
- ASP.net 路径问题 详解
- ASP.NET MVC源码分析系列
- asp.net+swfupload 多图片批量上传(附源码下载)
- ASP.NET 5探险(6):升级ASP.NET 5到beta6
- ASP.NET 5 Beta6发布了(翻译)
- 【ASP.NET】——AdRotator控件
- ASP.NET MsChart 控件出错:为 ChartImg.axd 执行子请求时出错
- ASP.NET Web API 特性
- asp.net MVC 模拟实现与源码分析
- ASP.NET MVC 小牛之旅1:何谓MVC