类名:XML

/// 1.创建XML文档
/// 2.在根节点下增加子元素
/// 3.在元素下增加子元素
/// 4.获取类型为制定值的一组节点
/// 5.抓取网页上的xml文档赋值给XmlDocument对象
/// 6.获取服务器上指定文件的xml文件内容
/// 7.读取xml直接返回DataSet
/// 8.读取Xml返回一个经排序或筛选后的DataView
/// 9.向Xml文件插入一行数据
/// 10.更行符合条件的一条Xml记录
/// 11.通过删除DataSet中iDeleteRow这一行,然后重写Xml以实现删除指定行
/// 12.删除strColumn列中值为ColumnValue的行
/// 13.删除所有行
/// 14.返回完整路径
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Net; namespace Tools
{
class XML
{
/// <summary>
/// 创建XML文档
/// </summary>
/// <param name="name">根节点名称</param>
/// <param name="type">根节点的一个属性值</param>
/// <returns></returns>
/// moss中调用方法:创建的文件如果要存到moss的文档库中,则:
/// XmlDocument doc = XmlOperate.CreateXmlDocument("project", "T");
/// 在此可嵌入增加子节点方法,如AddTaskNode(taskObj, ref doc); ..
/// byte[] fileContent = Encoding.UTF8.GetBytes(doc.OuterXml);
/// folder.Files.Add("name.xml", fileContent, true);
/// web.Update();
/// .net中调用方法:写入文件中,则:
/// document = XmlOperate.CreateXmlDocument("sex", "sexy");
/// document.Save("c:/bookstore.xml");
public static XmlDocument CreateXmlDocument(string name, string type)
{
XmlDocument doc = null;
XmlElement rootEle = null;
try
{
doc = new XmlDocument();
doc.LoadXml("<" + name + "/>");
rootEle = doc.DocumentElement;
rootEle.SetAttribute("type", type);
}
catch (Exception er)
{
throw er;
}
return doc;
} /// <summary>
/// 在根节点下增加子元素
/// </summary>
/// <param name="document"></param>
/// <param name="nodeName"></param>
/// <param name="type"></param>
/// 调用方法:
/// document = xmloper.CreateXmlDocument("animal", "carnivore");
/// XmlOperate.AddNewNode1(ref document, "carnivore", "high");
public static void AddNewNode1(ref XmlDocument document, string nodeName, string type)
{
XmlElement taskEle = null;
try
{
taskEle = document.CreateElement(nodeName);
taskEle.SetAttribute("type", type);
document.DocumentElement.AppendChild((XmlNode)taskEle);
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 在元素下增加子元素
/// </summary>
/// <param name="element"></param>
/// <param name="nodeName"></param>
/// <param name="type"></param>
/// 调用方法:
/// XmlDocument document = new XmlDocument();
/// 先取到相应的元素,然后调用该方法在该元素下增加子元素
/// XmlElement root = (XmlElement)document.SelectSingleNode("//animal/third");
/// XmlOperate.AddNewNode2(ref root,"thaw","boost investor confidence");
///注意上面的"//animal/third"也可换成"workflow[@type='T' and @isSpecial='1']"这种形式用来获取带有相应属性的元素
public static void AddNewNode2(ref XmlElement element, string nodeName, string type)
{
XmlElement taskEle = null;
try
{
taskEle = element.OwnerDocument.CreateElement(nodeName);
taskEle.SetAttribute("type", type);
element.AppendChild((XmlNode)taskEle);
}
catch (Exception ex)
{
throw ex;
} } /// <summary>
/// 获取类型为制定值的一组节点
/// </summary>
/// <param name="type">类型值。E.G.workflow[@type='T' and @isSpecial='1']</param>
/// <returns></returns>
/// 注意:返回的 XmlNodeList 类型是个类似于arraylist的类型,所以要得到它的值只能遍历
public static XmlNodeList GetDesiredNode(string type)
{
XmlDocument document = new XmlDocument();
return document.SelectNodes("type");
} /// <summary>
/// 抓取网页上的xml文档赋值给XmlDocument对象
/// </summary>
/// <param name="url">网页的url(网页的内容必须是xml格式的)</param>
/// <returns></returns>
public static XmlDocument GetXMLDocumentFromWebPage(string url)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = ; // Get response
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default);
string content = reader.ReadToEnd(); XmlDocument document = new XmlDocument();
document.LoadXml(content);
return document;
} /// <summary>
/// 获取服务器上指定文件的xml文件内容
/// </summary>
/// <param name="location"></param>
/// <returns></returns>
public static string GetXMLFile(string location)
{
XmlDocument document = new XmlDocument();
document.Load(@"G:\ttt.xml");
return document.InnerXml;
} //获取sharepoint中指定文件的内容
//public string GetProjectWorkflowUrl(SPFile file)
//{
// byte[] content = file.OpenBinary();
// contentStr = Encoding.UTF8.GetString(content);
// return contentStr;
//} #region GetDataSetByXml /// <summary>
/// 读取xml直接返回DataSet
/// </summary>
/// <param name="strXmlPath">xml文件相对路径</param>
/// <returns></returns>
public static DataSet GetDataSetByXml(string strXmlPath)
{
try
{
DataSet ds = new DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if (ds.Tables.Count > )
{
return ds;
}
return null;
}
catch (Exception )
{
return null;
}
}
#endregion
#region GetDataViewByXml
/// <summary>
/// 读取Xml返回一个经排序或筛选后的DataView
/// </summary>
/// <param name="strXmlPath">xml文件相对路径</param>
/// <param name="strWhere">筛选条件,如:"name = 'kgdiwss'"</param>
/// <param name="strSort">排序条件,如:"Id desc"</param>
/// <returns></returns>
public static DataView GetDataViewByXml(string strXmlPath, string strWhere, string strSort)
{
try
{
DataSet ds = new DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
DataView dv = new DataView(ds.Tables[]);
if (strSort != null)
{
dv.Sort = strSort;
}
if (strWhere != null)
{
dv.RowFilter = strWhere;
}
return dv;
}
catch (Exception)
{
return null;
}
}
#endregion #region WriteXmlByDataSet
///
/// 向Xml文件插入一行数据
///
/// xml文件相对路径
/// 要插入行的列名数组,如:string[] Columns = {"name","IsMarried"};
/// 要插入行每列的值数组,如:string[] ColumnValue={"明天去要饭","false"};
/// 成功返回true,否则返回false
public static bool WriteXmlByDataSet(string strXmlPath, string[] Columns, string[] ColumnValue)
{
try
{
//根据传入的XML路径得到.XSD的路径,两个文件放在同一个目录下
string strXsdPath = strXmlPath.Substring(, strXmlPath.IndexOf(".")) + ".xsd";
DataSet ds = new DataSet();
//读xml架构,关系到列的数据类型
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
ds.ReadXml(GetXmlFullPath(strXmlPath));
DataTable dt = ds.Tables[];
//在原来的表格基础上创建新行
DataRow newRow = dt.NewRow();
//循环给一行中的各个列赋值
for (int i = ; i < Columns.Length; i++)
{
newRow[Columns[i]] = ColumnValue[i];
}
dt.Rows.Add(newRow);
dt.AcceptChanges();
ds.AcceptChanges();
ds.WriteXml(GetXmlFullPath(strXmlPath));
return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region UpdateXmlRow
///
/// 更行符合条件的一条Xml记录
///
/// XML文件路径
/// 列名数组
/// 列值数组
/// 条件列名
/// 条件列值
///
public static bool UpdateXmlRow(string strXmlPath, string[] Columns, string[] ColumnValue, string strWhereColumnName, string strWhereColumnValue)
{
try
{
string strXsdPath = strXmlPath.Substring(, strXmlPath.IndexOf(".")) + ".xsd";
DataSet ds = new DataSet();
//读xml架构,关系到列的数据类型
ds.ReadXmlSchema(GetXmlFullPath(strXsdPath));
ds.ReadXml(GetXmlFullPath(strXmlPath));
//先判断行数
if (ds.Tables[].Rows.Count > )
{
for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
//如果当前记录为符合Where条件的记录
if (ds.Tables[].Rows[i][strWhereColumnName].ToString().Trim().Equals(strWhereColumnValue))
{
//循环给找到行的各列赋新值
for (int j = ; j < Columns.Length; j++)
{
ds.Tables[].Rows[i][Columns[j]] = ColumnValue[j];
}
//更新DataSet
ds.AcceptChanges();
//重新写入XML文件
ds.WriteXml(GetXmlFullPath(strXmlPath));
return true;
}
}
}
return false;
}
catch (Exception)
{
return false;
}
}
#endregion #region DeleteXmlRowByIndex
///
/// 通过删除DataSet中iDeleteRow这一行,然后重写Xml以实现删除指定行
///
///
/// 要删除的行在DataSet中的Index值
public static bool DeleteXmlRowByIndex(string strXmlPath, int iDeleteRow)
{
try
{
DataSet ds = new DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
if (ds.Tables[].Rows.Count > )
{
//删除符号条件的行
ds.Tables[].Rows[iDeleteRow].Delete();
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region DeleteXmlRows
///
/// 删除strColumn列中值为ColumnValue的行
///
/// xml相对路径
/// 列名
/// strColumn列中值为ColumnValue的行均会被删除
///
public static bool DeleteXmlRows(string strXmlPath, string strColumn, string[] ColumnValue)
{
try
{
DataSet ds = new DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//先判断行数
if (ds.Tables[].Rows.Count > )
{
//判断行多还是删除的值多,多的for循环放在里面
if (ColumnValue.Length > ds.Tables[].Rows.Count)
{
for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
for (int j = ; j < ColumnValue.Length; j++)
{
if (ds.Tables[].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j]))
{
ds.Tables[].Rows[i].Delete();
}
}
}
}
else
{
for (int j = ; j < ColumnValue.Length; j++)
{
for (int i = ; i < ds.Tables[].Rows.Count; i++)
{
if (ds.Tables[].Rows[i][strColumn].ToString().Trim().Equals(ColumnValue[j]))
{
ds.Tables[].Rows[i].Delete();
}
}
}
}
ds.WriteXml(GetXmlFullPath(strXmlPath));
}
return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region DeleteXmlAllRows
///
/// 删除所有行
///
/// XML路径
///
public static bool DeleteXmlAllRows(string strXmlPath)
{
try
{
DataSet ds = new DataSet();
ds.ReadXml(GetXmlFullPath(strXmlPath));
//如果记录条数大于0
if (ds.Tables[].Rows.Count > )
{
//移除所有记录
ds.Tables[].Rows.Clear();
}
//重新写入,这时XML文件中就只剩根节点了
ds.WriteXml(GetXmlFullPath(strXmlPath));
return true;
}
catch (Exception)
{
return false;
}
}
#endregion #region GetXmlFullPath
///
/// 返回完整路径
///
/// Xml的路径
///
public static string GetXmlFullPath(string strPath)
{
//如果路径中含有:符号,则认定为传入的是完整路径
if (strPath.IndexOf(":") > )
{
return strPath;
}
else
{
//返回完整路径
return System.Web.HttpContext.Current.Server.MapPath(strPath);
}
}
#endregion }
}

【.NET】XML文件的创建,修改,删除的更多相关文章

  1. [转]C# FileSystemWatcher监控指定文件或目录的文件的创建、删除、改动、重命名等活动

    觉得这个很常用..比如一些软件.   http://www.rabbit8.cn/DoNet/407.html   FileSystemWatcher控件主要功能: 监控指定文件或目录的文件的创建.删 ...

  2. Linux创建修改删除用户和组

    Linux 创建修改删除用户和组 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先 ...

  3. linux初级学习笔记二:linux操作系统及常用命令,文件的创建与删除和命名规则,命令行展开以及linux中部分目录的作用!(视频序号:02_3)

    本节学习的命令:tree,mkdir,rmdir,touch,stat,rm 本节学习的技能:Linux中主要的目录作用以及特殊的目录文件: 文件的命名规则,命令行展开: 文件的创建与删除: Linu ...

  4. MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制

    /*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修 ...

  5. oracle11g创建修改删除表

    oracle11g创建修改删除表 我的数据库名字: ORCL         密码:123456 1.模式 2.创建表 3.表约束 4.修改表 5.删除表 1.模式 set oracle_sid=OR ...

  6. java操作文件的创建、删除、遍历

    java操作文件的创建.删除.遍历: package test; import java.io.File; import java.io.IOException; import java.util.A ...

  7. asp.net 实现对xml文件的 读取,添加,删除,修改

    用于修改站内xml文件 已知有一个XML文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312" ...

  8. delphi获取文件的创建/修改时间、按时间删除指定文件下的文件

    uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrl ...

  9. XML文件的创建和解析笔记

    解析XML的四种方法 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这 ...

随机推荐

  1. Python2 中文编码处理

    今天写了几个脚本,都遇到了中英文混编的情况.需求要将其中的中文标点符号切换为英文符号. 举个例子: tags = '你好,good, 国语' 要将其中的中文半角逗号替换为英文逗号,为了方便后续的处理 ...

  2. hdu3579 Hello Kiki(数论)

    用到中国剩余定理,然后用扩展欧几里得算法求解. 这里有两个注意点,1.硬币数量不能为0或者负数 2.每个group数量有可能大于50,样例中就有 #include<stdio.h> #in ...

  3. js中的true,false盲点

    上一篇博客提到了一个js的小问题,我当时的解释不太清晰,后面请教胡大大才弄明白js中的处理. js里面检查true和false的过程是这样的: 所以'0'在逻辑判断里面,是被当做true. if('0 ...

  4. Facebook开源的基于SQL的操作系统检测和监控框架:osquery daemon详解

    osqueryd osqueryd(osquery daemon)是可以定期执行SQL查询和记录系统状态改变的驻守程序. osqueryd能够根据配置手机归档查询结果,并产生日志. 同时也可以使用系统 ...

  5. Lock与synchronized 的区别

    多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助 1.ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候 ...

  6. 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据

    第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...

  7. Chapter 21_4 捕获

    捕获功能在很多地方都在使用,就是从目标字符串中抽出匹配于该模式的内容,在指定捕获时,应将模式中需要捕获的部分写到一对圆括号内. 对于具有捕获的模式,函数match会将所有捕获到的值作为单独的结果返回. ...

  8. Zabbix 中文使用手册

    一.Zabbix简介 详情参考"企业监控利器-zabbix"http://waringid.blog.51cto.com/65148/904201. 二.Zabbix使用 2.1 ...

  9. UIColor,CGColor,CIColor三者间的区别和联系

    一.UIColor UIColor是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,它的颜色空间已经针对IOS进行了优化.UIColor包含了一些类方法用于创建一 ...

  10. URL中的#

    作者:阮一峰   http://www.ruanyifeng.com/blog/2011/03/url_hash.html 一.#的涵义 #代表网页中的一个位置.其右面的字符,就是该位置的标识符.比如 ...