创建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文件读写的更多相关文章

  1. 实现动态的XML文件读写操作

    实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...

  2. QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QXmlStreamReader/QXmlStreamWriter实现Qt下xml文件读写   ...

  3. 实现动态的XML文件读写操作(依然带干货)

    前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管 ...

  4. 爪哇国新游记之十三----XML文件读写

    /** * XML读写示例 * @author hx * */ public class XmlReaderWriter{ /** * 读取一个XML文件,返回一个雇员链表 * @param file ...

  5. Java中的的XML文件读写

    XML简介 要理解XML,HTML等格式,先来理解文档对象模型DOM 根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树.DOM 是这样规定的:整个文档是一个文档节点每个 HT ...

  6. Java中的的XML文件读写与DOM

    XML简介 要理解XML,HTML等格式,先来理解文档对象模型DOM 根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树.DOM 是这样规定的:整个文档是一个文档节点每个 HT ...

  7. (Unity)XML文件读写与IO文件操作类使用介绍

    using System.Xml;                //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...

  8. XML文件读写编码不是UTF-8的问题

    FileWriter和FileReader在写.读文件时,使用系统当前默认的编码方式. 在中文win下encoding基本是GB2312,在英文win下基本是ISO-8859-1.所以要创建一个UTF ...

  9. Qt之QDomDocument操作xml文件-模拟ini文件存储

    一.背景 不得不说Qt是一个很强大的类库,不管是做项目还是做产品,Qt自身封装的东西就已经非常全面了,我们今天的这篇文章就是模拟了Qt读写ini文件的一个操作,当然是由于一些外力原因,我们决定自己来完 ...

随机推荐

  1. Vmware怎样使用nat和桥接方式解决虚拟机联网问题

    对于很多的linux初学者来说,最开始学习linux时通常是在虚拟机上进行的,然而对于新手来说虚拟机联网会对他们来说是比较困难的.这里我根据自己的经验写了一篇文档分享给大家.下面对几种连接方式进行简单 ...

  2. 速度之王 — LZ4压缩算法(三)

    LZ4使用 make / make clean 得到可执行程序:lz4.lz4c Usage: ./lz4 [arg] [input] [output] input : a filename Argu ...

  3. 夏令时 DST (Daylight Saving Time) java中的夏令时【转】

    1916年,德国首先实行夏令时,英国因为怕德国会从中得到更大的效益,因此紧跟着也采取了夏令时 1986年至1991年,中华人民共和国在全国范围实行了六年夏令时 サマータイム 夏時間(日本现在没有实行夏 ...

  4. 【转】 Mybatis/Ibatis,数据库操作的返回值

    该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey&g ...

  5. #ifdef 的技巧用法

    -- int _tmain(int argc, _TCHAR* argv[]) { #ifdef DEBUG cout<<"DEBUG has been defined" ...

  6. poj_2674 弹性碰撞

    题目大意 给定一条直线,长度为L 表示区间[0, L].在直线上开始放置N个人,每个人有一个初始位置pos(用到直线上端点0的距离表示)和初始方向dir('p' 或 'P' 表示向端点L行走, 'n' ...

  7. Docker跨主机通信之路由

    一.实验环境: 主机名 主机IP Docker0_IP Docker1 192.168.88.130 172.17.0.1 Docker2 192.168.88.131 172.18.0.1 二.实验 ...

  8. 膜拜(codevs 3369)

    3369 膜拜  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 神牛有很多…当然…每个同学都有自己衷心膜拜的 ...

  9. Android Session

    AsyncHttpClient保持session http://blog.csdn.net/ewrfedf/article/details/21968511

  10. Android之UI控件

    本文主要包括以下内容 Spinner的使用 Gallery的使用 Spinner的使用 Spinner的实现过程是 1. 在xml文件中定义Spinner的控件 2. 在activity中获取Spin ...