解析代码
来源:互联网 发布:网络拓扑检测 编辑:程序博客网 时间:2024/04/30 04:58
在应用程序中对xml文件的各种操作 收藏
首先是在应用程序中对xml文件的操作代码:>里面包括了对xml文件节点的增,删,改,查:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
import java.io.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
public class DMLInXml
{
//在指定位置插入节点的的数据
public void insertXml(Document doc,String id)
{
Element student=doc.createElement("student");//创建一个子节点
Element name=doc.createElement("name");//子节点的子元素
Element age=doc.createElement("age");//子节点的子元素
Element score=doc.createElement("score");//子节点的子元素
Attr att=doc.createAttribute("id");//子节点的属性及名字
att.setValue("s108");//属性的值
student.setAttributeNode(att);//把属性加入此节点
Text tname=doc.createTextNode("宋树林");//元素的文本节点(元素的值)
Text tage=doc.createTextNode("24");//元素的文本节点(元素的值)
Text tscore=doc.createTextNode("98");//元素的文本节点(元素的值)
student.appendChild(name).appendChild(tname);//把元素添加到节点中
student.appendChild(age).appendChild(tage);//把元素添加到节点中
student.appendChild(score).appendChild(tscore);//把元素添加到节点中
Element root=doc.getDocumentElement();//获得根元素
Node n=(Node)root;//转换成节点(才可以插入子节点)
Element e;
NamedNodeMap nnm;//属性列表
Attr a;
NodeList list=doc.getElementsByTagName("student");//获得所有学生节点
for(int i=0;i<list.getLength();i++)
{
e=(Element)list.item(i);//转换成元素才能取到它的属性
nnm=e.getAttributes();//取到所有属性
a=(Attr)nnm.item(0);//获得第一个属性(此属性必须能唯一区别学生)
if(a.getValue().equals(id))
{
//在学号为S102的学生前插入刚才创建的学生节点
n.insertBefore(((Node)student),list.item(i));
return;
}
}
}
//修改指定节点的元素值
public void updateXml(Document doc,String name,String score)
{
NodeList list=doc.getElementsByTagName("name");//获得所有name的节点
Element e;
for(int i=0;i<list.getLength();i++)
{
e=(Element)list.item(i);
if(e.getFirstChild().getNodeValue().equals(name))//查找传入的名字的节点
{
e=(Element)e.getNextSibling().getNextSibling().getNextSibling().getNextSibling();//找到score元素
e.getFirstChild().setNodeValue(score);//修改score的文本节点(score的值)
return;
}
}
}
//删除指定的节点
public void deleteXml(Document doc,String id)
{
Element root=doc.getDocumentElement();//获得根元素
Node n=(Node)root;//转换成根节点
NodeList list=doc.getElementsByTagName("student");//获得所有student的节点
NamedNodeMap nnm;
Attr att;
Element e;
for(int i=0;i<list.getLength();i++)
{
e=(Element)list.item(i);//把节点转换成元素
nnm=e.getAttributes();//获得元素的所有属性
att=(Attr)nnm.item(0);//获得属性id
if(att.getValue().equals(id))//如果id的值为转入的id
{
n.removeChild(list.item(i));//删除此节点
return;
}
}
}
public void saveXml(Document doc)
{
try
{
DOMSource dom=new DOMSource(doc);//创建一个输入源
StreamResult sr=new StreamResult(new File("DmlXml.xml"));//创建一个输出流
TransformerFactory tf=TransformerFactory.newInstance();
Transformer tran=tf.newTransformer();
tran.transform(dom,sr);//写入文件
}
catch(Exception err)
{
err.printStackTrace();
}
}
public void printXml(Document doc)
{
NodeList list=doc.getElementsByTagName("*");//获得所有节点
Element e;
NamedNodeMap nnm;
Attr att;
for(int i=0;i<list.getLength();i++)
{
e=(Element)list.item(i);//获得每个节点并转换成元素
System.out.println("<"+e.getTagName()+">"+e.getFirstChild().getNodeValue());//输出元素的的名字和值
nnm=e.getAttributes();//获得元素的所有属性
if(nnm!=null)
{
for(int j=0;j<nnm.getLength();j++)
{
att=(Attr)nnm.item(j);
System.out.println("属性:"+att.getName()+"值"+att.getValue());//输入每个属性的名字和值
}
}
}
}
public static void main(String[] args) throws Exception
{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(new File("musicclass.xml"));//DOM API解析XML文件
DMLInXml obj=new DMLInXml();//new 一个实例
System.out.println("打印原始XML数据");
obj.printXml(doc);
//在指定位置插入节点的的数据
obj.insertXml(doc,"s102");
System.out.println("在指定位置插入节点的的数据");
obj.printXml(doc);
//修改某节点中元素的值
obj.updateXml(doc,"笑林","50");
System.out.println("修改后的数据");
obj.printXml(doc);
//删除指定的节点
obj.deleteXml(doc,"s102");
System.out.println("删除节点后的数据");
obj.printXml(doc);
//保存修改后的XML数据
obj.saveXml(doc);
System.out.println("文件保存完毕");
}
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
下面是参考的xml文档
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<?xml version="1.0" encoding="UTF-8"?>
<musicclass>
<student id="s101">
<name>李华</name>
<age>12</age>
<score>92</score>
</student>
<student id="s102">
<name>笑林</name>
<age>22</age>
<score>82</score>
</student>
<student id="s103">
<name>王明</name>
<age>18</age>
<score>10</score>
</student>
</musicclass>
- 解析代码
- 解析html代码
- 代码解析技术(一)
- 代码解析技术(二)
- 电脑蓝屏代码解析
- java代码解析
- java代码解析2
- 代码解析技术
- ROME解析RSS(代码)
- 五子棋代码解析
- ice 通用代码解析
- JUnit4框架代码解析
- 代码优化解析器
- TicToc 模型 代码解析
- TicToc 模型 代码解析
- 代码解析(1)
- TopoMain界面代码解析
- BootLoader代码解析
- 了解Hadoop
- ObjectARX
- [技术讨论]代码编写能力与管理手段的配合
- 貌似
- select_input
- 解析代码
- [全程建模]独创的绩效管理模型
- 初略了解了下P2P技术
- css 嵌入字体
- Linux 系统服务开机启动
- xml解析
- SQL语句过长换行问题!
- select-javacsript
- [JAVASCRIPT] this 对象