在应用程序中对xml文件的各种操作
来源:互联网 发布:有关人工智能的新闻 编辑:程序博客网 时间:2024/05/16 06:37
首先是在应用程序中对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>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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>
- 在应用程序中对xml文件的各种操作
- 使用Dom4j对XML文件的各种操作
- 【转】C#对XML文件的各种操作实现方法
- C#对XML文件的各种操作实现方法
- uinty中对Xml文件的操作
- 在js中对json的各种操作
- 在应用程序中实现对NandFlash的操作
- 在应用程序中实现对NandFlash的操作
- 在应用程序中实现对NandFlash的操作
- 对 Xml 文件的操作
- 对XMl文件的操作
- 在应用程序中使用Xml文件
- asp.net中对XML文件的简单操作
- winform中对XML文件的读,修改操作
- C#中对XML文件的一些基本操作
- .NET中对XML文件的操作资料(未完)
- Java对各种文件的操作详解
- Java对各种文件的操作详解
- GDI+ 在Delphi程序的应用 -- 调整图像亮度
- Linux网络基础 zz 基于debian--仅供参考
- linux的安装方式zz (初学者看)
- 写给2007
- 真笨,多行多列的显示居然困扰了自己一段时间~~~
- 在应用程序中对xml文件的各种操作
- 2007-01-28
- CSS解决未知高度垂直居中终极方案, 适应多栏结构, 兼容IE 5/6/7, FF/OPERA/SAFARI
- 如何成为一名优秀的程序员(上)
- 潮汕之行
- 硬盘分区隐藏
- WebClient和WebRequest获取html代码
- 51CTO Python 技术文章
- Win32多线程