XML读写操作

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.OleDb;

using System.IO;

using System.Linq;

using System.Text;

using System.Xml;

using System.Xml.Linq;

//关于XML的Demo

namespace XMLDemo

{

class Program

{

private static void Main(string[] args)

{

//AppendXML();

// XMLDocument xml

//RemoveChildNodeByAttribute();

Console.ReadLine();

}

#region "XML operation"

//用Linq操作XML

private static void RemoveChildNodeByAttribute()

{

XDocument xml = XDocument.Load(@"E:\books.xml");

XElement element = xml.Root.Element("book");

IEnumerable<XElement> xEle = from item in xml.Root.Descendants() where item.Attribute("category").Value == "children" select item;

XElement x = xEle.FirstOrDefault();

x.Remove();

xml.Save(@"E:\books_linq.xml");

}

//remove 完Node以后,需要Save当前的Document,否则不予以保存

private static void RemoveChildNode()

{

XmlDocument xml = new XmlDocument();

xml.Load(@"E:\books.xml");

var element = xml.GetElementsByTagName("book")[0];

xml.DocumentElement.RemoveChild(element);

//var x = xml.GetElementsByTagName("book")[0];

//x[0].RemoveAttribute("category");

//x.ParentNode.RemoveChild(x);

xml.Save(@"E:\books_update.xml");

}

private static string DataSetWriteToSpecialXML()

{

DataSet xmlDS = GetDataSet();

MemoryStream stream = null;

XmlTextWriter writer = null;

try

{

stream = new MemoryStream();

//从stream装载到XmlTextReader

writer = new XmlTextWriter(stream, Encoding.Unicode);

//用WriteXml方法写入文件.

xmlDS.WriteXml(writer);

int count = (int) stream.Length;

byte[] arr = new byte[count];

stream.Seek(0, SeekOrigin.Begin);

stream.Read(arr, 0, count);

UnicodeEncoding utf = new UnicodeEncoding();

return utf.GetString(arr).Trim();

}

catch (System.Exception ex)

{

throw ex;

}

finally

{

if (writer != null)

writer.Close();

}

}

 

private static void DataSetWriteToSpecialXML2()

{

DataSet xmlDS = GetDataSet();

MemoryStream stream = null;

XmlTextWriter writer = null;

try

{

stream = new MemoryStream();

//从stream装载到XmlTextReader

writer = new XmlTextWriter(stream, Encoding.Unicode);

//用WriteXml方法写入文件.

xmlDS.WriteXml(writer);

int count = (int) stream.Length;

byte[] arr = new byte[count];

stream.Seek(0, SeekOrigin.Begin);

stream.Read(arr, 0, count);

//返回Unicode编码的文本

var xmlFile = @"E:\data_translation3.xml";

UnicodeEncoding utf = new UnicodeEncoding();

StreamWriter sw = new StreamWriter(xmlFile);

sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

sw.WriteLine(utf.GetString(arr).Trim());

sw.Close();

}

catch (System.Exception ex)

{

throw ex;

}

finally

{

if (writer != null)

writer.Close();

}

}

 

private static void DataSetWriteToXML()

{

DataSet ds = GetDataSet();

XmlTextWriter xtw = new XmlTextWriter(@"E:/verify.xml", Encoding.GetEncoding("utf-8"));

xtw.WriteRaw("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

ds.WriteXml(xtw);

//ds.WriteXml(@"E:/verify.xml");

}

private static DataSet GetDataSet()

{

const string conStr = @"Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=JANE_UT_Dev;Data Source=CHNSHASV0002\SQL2008R2;MultipleActiveResultSets=True";

OleDbConnection con = new OleDbConnection(conStr);

con.Open();

string oSql = "select field_name as FieldName ,table_name as TableName, Source,Translation from data_translation";

OleDbDataAdapter da = new OleDbDataAdapter(oSql, con);

DataSet ds = new DataSet("DataTranslation");

da.Fill(ds, "DataTranslation");

con.Close();

return ds;

}

/// <summary>

/// 为根节点添加Element

/// </summary>

private static void CreateElementForRootNode()

{

XmlDocument xml = new XmlDocument();

xml.Load(@"E:\data_translation1.xml");

var node = xml.SelectSingleNode("root");

if (node == null) return;

XmlElement xe1 = xml.CreateElement("提醒3"); //创建一个<book>节点

xe1.SetAttribute("提醒日期", "2013-01-22"); //设置该节点genre属性

xe1.SetAttribute("提醒内容", "提醒3的内容1"); //设置该节点ISBN属性

xe1.SetAttribute("提醒附件", "提醒3附件path"); //设置该节点ISBN属性

node.AppendChild(xe1);

XmlElement xesub1 = xml.CreateElement("提醒4");

xesub1.InnerText = "提醒4"; //设置文本节点

node.AppendChild(xesub1); //添加到<book>节点中

var subNode = xesub1.CloneNode(true);

node.AppendChild(subNode);

xml.Save(@"E:\data_translation2.xml");

}


//为已存在的XML新加Element

private static void AppendXML()

{

XDocument xdoc1 = XDocument.Load(@"E:\data_translation1.xml");

//要追加的新内容(注意 一定要加root )

xdoc1.Root.Add(new XElement("提醒2",

new XElement("提醒日期", "2013-01-21 "),

new XElement("提醒内容", "提醒2的内容"),

new XElement("提醒附件", "提醒2附件path")

));

xdoc1.Save(@"E:\data_translation1.xml", SaveOptions.None);// 按xml格式保存

}

//新建XML,并且为XML新加节点

private void CreateXML()

{

//为XML加Element

if (!File.Exists(@"E:\data_translation1.xml"))

{

XDocument xdoc = new XDocument();

//添加一个初始元素“提醒1”

XElement xe =

new XElement("root",

new XElement("提醒1", new XElement("提醒日期", "2012-01-21 "), new XElement("提醒内容", "提醒1的内容"), new XElement("提醒附件", "提醒一附件path"))

);

xdoc.Add(xe);

xdoc.Save(@"E:\data_translation1.xml", SaveOptions.DisableFormatting);

}

Console.ReadLine();

}

#endregion

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值