xml文件读写
创建xml文件,对xml文件进行添加新节点、删除节点、更新节点。创建的如下的xml文件。
<?xml version="1.0" encoding="UTF-8"?> -<FileItems> -<FileInfo fileid="12jdkfjdkfkdfjkdfj"> <FileName>test.txt</FileName> <last_seen>-- :</last_seen> <pushFileStaus>完成</pushFileStaus> <ActionType>上传</ActionType> <logFilePath>C: est.txt</logFilePath> <SavedSize></SavedSize> <localFilePath>C: est.txt</localFilePath> <HostIP>172.19.8.121</HostIP> <Port></Port> </FileInfo>
对xml文件进行查找,可以使用using System.Xml.Linq;命名空间中的XElement(XName)类,使用myXElement.Elements().Where(node => node.Attribute("fileid").Value == "12jdkfjdkfkdfjkdfj");其中myXElement是XElement的实例对象、fileid是xml节点属性名,“12jdkfjdkfkdfjkdfj”是属性的值。
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
string FullPath = string.Format(@"{0}\{1}\{2}", Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "FilePulla", "history.xml");
/// <summary>
/// 创建xml文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, RoutedEventArgs e)
{
FileInfo xmlFile= new FileInfo(FullPath);
XmlTextWriter xmlWriter = new XmlTextWriter(xmlFile.FullName, Encoding.UTF8);
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("FileItems"); xmlWriter.WriteStartElement("FileInfo");
xmlWriter.WriteAttributeString("fileid", "12jdkfjdkfkdfjkdfj");
xmlWriter.WriteElementString("FileName", "test.txt");
xmlWriter.WriteElementString("last_seen", "2014-06-09 10:30");
xmlWriter.WriteElementString("pushFileStaus", "完成");
xmlWriter.WriteElementString("ActionType", "上传");
xmlWriter.WriteElementString("logFilePath", "C:\test.txt");
xmlWriter.WriteElementString("SavedSize", "");
xmlWriter.WriteElementString("localFilePath", "C:\test.txt");
xmlWriter.WriteElementString("HostIP", "172.19.8.121");
xmlWriter.WriteElementString("Port", "");
xmlWriter.WriteEndElement(); ////////////////////////////////////////////////////////////////////
xmlWriter.WriteStartElement("FileInfo");
xmlWriter.WriteAttributeString("fileid", "12jdkfjdkfkdfjkdfj");
xmlWriter.WriteElementString("FileName", "test.txt");
xmlWriter.WriteElementString("last_seen", "2014-06-09 10:30");
xmlWriter.WriteElementString("pushFileStaus", "完成");
xmlWriter.WriteElementString("ActionType", "上传");
xmlWriter.WriteElementString("logFilePath", "C:\test.txt");
xmlWriter.WriteElementString("SavedSize", "");
xmlWriter.WriteElementString("localFilePath", "C:\test.txt");
xmlWriter.WriteElementString("HostIP", "172.19.8.121");
xmlWriter.WriteElementString("Port", "");
xmlWriter.WriteEndElement(); xmlWriter.WriteFullEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Close(); }
/// <summary>
/// 在已存在的文件上,添加新节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, RoutedEventArgs e)
{
if (File.Exists(FullPath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(FullPath);
XmlNode root = xmlDoc.SelectSingleNode("FileItems");
//查找<bookstore>
XmlElement element = xmlDoc.CreateElement("FileInfo");
element.SetAttribute("fileid", "12jdkfjdkfkdfjkdfjere"); XmlElement xesub1 = xmlDoc.CreateElement("FileName");
xesub1.InnerText = "test.txt";
element.AppendChild(xesub1);
//设置文本节点
XmlElement xesub10 = xmlDoc.CreateElement("last_seen");
xesub10.InnerText = "2014-06-09 11:35";
element.AppendChild(xesub10); XmlElement xesub2 = xmlDoc.CreateElement("pushFileStaus");
xesub2.InnerText = "test.txt";
element.AppendChild(xesub2);
XmlElement xesub3 = xmlDoc.CreateElement("ActionType");
xesub3.InnerText = "test.txt";
element.AppendChild(xesub3);
XmlElement xesub4 = xmlDoc.CreateElement("logFilePath");
xesub4.InnerText = "test.txt";
element.AppendChild(xesub4);
XmlElement xesub5 = xmlDoc.CreateElement("SavedSize");
xesub5.InnerText = "test.txt";
element.AppendChild(xesub5);
XmlElement xesub6 = xmlDoc.CreateElement("localFilePath");
xesub6.InnerText = "test.txt";
element.AppendChild(xesub6);
XmlElement xesub7 = xmlDoc.CreateElement("HostIP");
xesub7.InnerText = "test.txt";
element.AppendChild(xesub7);
XmlElement xesub8 = xmlDoc.CreateElement("HostIP");
xesub8.InnerText = "test.txt";
element.AppendChild(xesub8);
XmlElement xesub9 = xmlDoc.CreateElement("Port");
xesub9.InnerText = "test.txt";
element.AppendChild(xesub9);
root.AppendChild(element);
xmlDoc.Save(FullPath);
} }
/// <summary>
/// 删除节点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, RoutedEventArgs e)
{
XElement xmlDoc = XElement.Load(FullPath);
XElement selectedElement = xmlDoc.Elements().Where(xl => xl.Attribute("fileid").Value == "12jdkfjdkfkdfjkdfjere").FirstOrDefault();
if (selectedElement == null) return;
selectedElement.Remove();
xmlDoc.Save(FullPath);
}
/// <summary>
/// 修改节点的值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, RoutedEventArgs e)
{
XElement xmlDoc = XElement.Load(FullPath);
XElement selectedElement = xmlDoc.Elements().Where(xl => xl.Attribute("fileid").Value == "12jdkfjdkfkdfjkdfjere").FirstOrDefault();
if (selectedElement == null) return;
selectedElement.Elements("pushFileStaus").FirstOrDefault().SetValue("完成");
xmlDoc.Save(FullPath);
}
}
xml文件读写的更多相关文章
- 实现动态的XML文件读写操作
实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...
- QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写 ...
- 实现动态的XML文件读写操作(依然带干货)
前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管 ...
- 爪哇国新游记之十三----XML文件读写
/** * XML读写示例 * @author hx * */ public class XmlReaderWriter{ /** * 读取一个XML文件,返回一个雇员链表 * @param file ...
- Java中的的XML文件读写
XML简介 要理解XML,HTML等格式,先来理解文档对象模型DOM 根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树.DOM 是这样规定的:整个文档是一个文档节点每个 HT ...
- Java中的的XML文件读写与DOM
XML简介 要理解XML,HTML等格式,先来理解文档对象模型DOM 根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树.DOM 是这样规定的:整个文档是一个文档节点每个 HT ...
- (Unity)XML文件读写与IO文件操作类使用介绍
using System.Xml; //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...
- XML文件读写编码不是UTF-8的问题
FileWriter和FileReader在写.读文件时,使用系统当前默认的编码方式. 在中文win下encoding基本是GB2312,在英文win下基本是ISO-8859-1.所以要创建一个UTF ...
- Qt之QDomDocument操作xml文件-模拟ini文件存储
一.背景 不得不说Qt是一个很强大的类库,不管是做项目还是做产品,Qt自身封装的东西就已经非常全面了,我们今天的这篇文章就是模拟了Qt读写ini文件的一个操作,当然是由于一些外力原因,我们决定自己来完 ...
随机推荐
- Capistrano SSH::AuthenticationFailed, not prompting for password
文章是从我的个人博客上粘贴过来的, 大家也可以访问 www.iwangzheng.com 在本地执行cap deploy部署的时候会报错: connection failed for: 11.11.1 ...
- 他们在军训,我在搞 OI(四)
(怎么自动变成两天一更了?) ——因为我菜啊 T_T Day 5 今天上午刷得爽啊!5 道 NOIP,前四题直接 1A,然而最后一题还是 WA 了一发才 A... 第一题是个简单的贪心,题意大概是 n ...
- (转载)【Android】ViewGroup全面分析
转载自:http://www.cnblogs.com/lqminn/archive/2013/01/23/2866543.html 一个Viewgroup基本的继承类格式如下: import andr ...
- ubuntu搭建lamp环境
首先安装软件: sudo apt-get install apache2 sudo apt-get install php5 sudo apt-get install mysql-server sud ...
- Scanner 和 String 类的常用方法
Scanner类是在jdk1.5 之后有了这个: 常用格式是: Scanner sc = new Scanner(System.in); 从以下版本开始: 1.5 构造方法摘要 Scanner(Fil ...
- 39.递归颠倒栈[ReverseStack]
[题目] 用递归颠倒一个栈.例如输入栈{1, 2, 3, 4, 5},1在栈顶.颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶. [分析] 乍一看到这道题目,第一反应是把栈里的所有元素逐一p ...
- 32.C++不能被继承的类[C++ Final Class]
[题目] 用C++设计一个不能被继承的类. [分析] 这是Adobe公司2007年校园招聘的最新笔试题.这道题除了考察应聘者的C++基本功底外,还能考察反应能力,是一道很好的题目. 在Java中定义了 ...
- Mac 安装Java JDK
(一)Java JDK 首先到该网址,下载JavaSE http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads- ...
- 什么是网络爬虫(Spider) 程序
Spider又叫WebCrawler或者Robot,是一个沿着链接漫游Web 文档集合的程序.它一般驻留在服务器上,通过给定的一些URL,利用HTTP等标准协议读取相应文档,然后以文档中包括的所有未访 ...
- KVM中Linux虚拟机的硬盘添加方法
[root@cache01 ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_roo ...