当前位置:  编程技术>.net/c#/asp.net

c#操作xml文件示例

    来源: 互联网  发布时间:2014-10-29

    本文导语:  1. 新增XML文件 代码如下:XMLToolV2 _xmlHelper = new XMLToolV2(@"C:20140311blogs.xml");//xml保存路径或者读取路径 _xmlHelper.Create("Person", "utf-8");//跟节点名称:person;encode:utf-8 XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟节点后创建pers...

1. 新增XML文件

代码如下:

XMLToolV2 _xmlHelper = new XMLToolV2(@"C:20140311blogs.xml");//xml保存路径或者读取路径
 _xmlHelper.Create("Person", "utf-8");//跟节点名称:person;encode:utf-8
 XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟节点后创建person节点
 _xmlHelper.SetAttribute(_person, "Gender", "Man");//设置person节点属性Gender
 _xmlHelper.SetAttribute(_person, "Address", "shanghai");//设置person节点属性Address
 _xmlHelper.Save();//保存xml文件

上述代码实现效果:

那在Person节点继续增加节点,实现也很简单

代码如下:

_xmlHelper.Create("Person", "utf-8");//跟节点名称:person;encode:utf-8
XmlElement _person = _xmlHelper.CreateElec("Name", "Yan-Zhiwei");//在跟节点后创建person节点
_xmlHelper.SetAttribute(_person, "Gender", "Man");//设置person节点属性Gender
_xmlHelper.SetAttribute(_person, "Address", "shanghai");//设置person节点属性Address
XmlElement _workLh = _xmlHelper.CreateElec(_person, "Work", "shanghai LH");//在person节点下增加work节点
_xmlHelper.SetAttribute(_workLh, "Year", "2013~");//设置work节点属性Title
XmlElement _workRK = _xmlHelper.CreateElec(_person, "Work", "shanghai Ranking");//在person节点下增加work节点
_xmlHelper.SetAttribute(_workRK, "Year", "2011~2013");//设置work节点属性Title
_xmlHelper.Save();//保存xml文件

上述代码实现效果:

2.读取节点的值,个人感觉xpath方式比linq to xml更为明了方便

代码如下:

XMLToolV2 _xmlHelper = new XMLToolV2(@"C:20140311blogs.xml");//xml保存路径或者读取路径
XmlNode _person = _xmlHelper.Select("Person/Name/text()");
Console.WriteLine("Name:" + _person.InnerText);
XmlNode _gender = _xmlHelper.Select("Person/Name[@Gender='Man']");
Console.WriteLine("Gender:" + _gender.Attributes["Gender"].Value);
Console.WriteLine("Address:" + _gender.Attributes["Address"].Value);
Console.WriteLine("-----------------------------");
XmlNodeList _workRecord = _xmlHelper.SelectNodeList("Person/Name/Work");
XMLToolV2.Loop(_workRecord, (XmlNode node) =>
{
    Console.WriteLine("Work:" + node.InnerText + " Year:" + node.Attributes["Year"].Value);
});


上述代码实现效果:

3.格式化显示XML

代码如下:

XMLToolV2 _xmlHelper = new XMLToolV2(@"C:20140311blogs.xml");//xml保存路径或者读取路径
string _xmlString = _xmlHelper.ShowXml();
Console.WriteLine(XMLToolV2.FormatXml(_xmlString, "utf-8"));


上述代码实现效果:

4.XMLToolV2源代码

代码如下:

public class XMLToolV2
    {
        static string _xmlPath;
        static XmlDocument _xmlDoc { get; set; }
        static XmlElement _xmlRoot;


        public XMLToolV2(string xmlPath)
        {
            _xmlPath = xmlPath;
            LoadXmlDoc();
        }
        public XmlNode Select(string xPath)
        {
            if (string.IsNullOrEmpty(xPath))
                throw new ArgumentNullException("xPath");
            return _xmlDoc.SelectSingleNode(xPath);
        }
        public XmlNodeList SelectNodeList(string xPath)
        {
            if (string.IsNullOrEmpty(xPath))
                throw new ArgumentNullException("xPath");
            return _xmlDoc.SelectNodes(xPath);
        }
        public void Create(string rootName, string encode)
        {
            CreateXmlDoc(rootName, encode);
        }
        private void CreateXmlDoc(string rootName, string encode)
        {
            if (!File.Exists(_xmlPath))
            {
                if (string.IsNullOrEmpty(rootName))
                    throw new ArgumentNullException(rootName);
                _xmlDoc = new XmlDocument();
                XmlDeclaration _xmldecl = _xmlDoc.CreateXmlDeclaration("1.0", encode, null);
                _xmlDoc.AppendChild(_xmldecl);
                _xmlRoot = _xmlDoc.CreateElement("", rootName, "");
                _xmlDoc.AppendChild(_xmlRoot);
            }
        }
        public void LoadXmlDoc()
        {
            if (File.Exists(_xmlPath))
            {
                _xmlDoc = new XmlDocument();
                _xmlDoc.Load(_xmlPath);
                _xmlRoot = _xmlDoc.DocumentElement;
            }
        }
        public void Save()
        {
            if (_xmlDoc != null)
            {
                _xmlDoc.Save(_xmlPath);
            }
        }
        public XmlElement CreateElec(string elecName, string elecValue)
        {
            XmlElement _xElec = CreateElement(_xmlRoot, elecName, elecValue);
            return _xElec;
        }

        private XmlElement CreateElement(XmlNode _xmldocSelect, string elecName, string elecValue)
        {
            if (_xmldocSelect != null)
            {
                XmlElement _xElec = _xmlDoc.CreateElement(elecName);
                _xElec.InnerText = elecValue;
                _xmldocSelect.AppendChild(_xElec);
                return _xElec;
            }
            return null;
        }

        public XmlElement CreateElec(XmlElement xmlParentElec, string elecName, string elecValue)
        {
            if (xmlParentElec != null)
            {
                XmlElement _xElec = CreateElement(xmlParentElec, elecName, elecValue);
                return _xElec;
            }
            return null;
        }
        public void SetAttribute(XmlElement xElement, string attrName, string attrValue)
        {
            if (xElement != null)
            {
                xElement.SetAttribute(attrName, attrValue);
            }
        }
        public int Check(string xpath)
        {
            if (string.IsNullOrEmpty(xpath))
                throw new ArgumentNullException("xpath");
            return SelectNodeList(xpath).Count;
        }
        public string ShowXml()
        {
            if (_xmlDoc != null)
            {
                return _xmlDoc.OuterXml;
            }
            return string.Empty;
        }
        public static string FormatXml(string xmlString, string encode)
        {
            if (string.IsNullOrEmpty(xmlString))
                throw new ArgumentNullException("xmlString");
            if (string.IsNullOrEmpty(encode))
                throw new ArgumentNullException("encode");
            MemoryStream _mstream = new MemoryStream();
            XmlTextWriter _writer = new XmlTextWriter(_mstream, null);
            XmlDocument _xDoc = new XmlDocument();
            _writer.Formatting = Formatting.Indented;

            _xDoc.LoadXml(xmlString);
            _xDoc.WriteTo(_writer);
            _writer.Flush();
            _writer.Close();

            Encoding _encoding = Encoding.GetEncoding(encode);
            string _xmlString = _encoding.GetString(_mstream.ToArray());
            _mstream.Close();
            return _xmlString;
        }
        public static void Loop(XmlNodeList nodeList, Action xmlNode)
        {
            if (nodeList != null)
            {
                foreach (XmlNode xNode in nodeList)
                {
                    xmlNode(xNode);
                }
            }
        }
    }


    
 
 

您可能感兴趣的文章:

  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • c#的时间日期操作示例分享(c#获取当前日期)
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • C#操作txt文件,进行清空添加操作的小例子
  • C#实现装箱与拆箱操作简单实例
  • 浅谈C#互操作的内存溢出问题
  • C# 中的??操作符浅谈
  • c#剪切板操作的简单实例
  • c# 调用Surfer软件,添加引用的具体操作方法
  • c#异步task示例分享(异步操作)
  • c#下注册表操作的一个小细节
  • C#操作CLOB大对象的代码一例
  • c#判断操作系统位数实例代码
  • 一些关于c#与Sql的时间的操作
  • c#判断操作系统位数的示例分享
  • C#中的位操作小结
  • C# 操作符之三元操作符浅析
  • C# Dictionary操作范例(入门新手参考)
  • C#的WebBrowser操作frame实例解析
  • C# Winform 操作 INI 配置文件的实现代码
  • C#程序最小化到托盘图标操作步骤与实现代码
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • yii操作cookie方法示例
  • html form标签用法(js操作form)介绍及代码示例
  • Thinkphp实现MySQL读写分离操作示例
  • c#/ASP.NET操作cookie(读写)代码示例
  • python读取csv文件示例(python操作csv)
  • python读写文件操作示例程序
  • 使用python删除nginx缓存文件示例(python文件操作)
  • jquery操作text,radio,checkbox,select示例代码
  • java使用pdfbox操作pdf文件示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • MyEclipse如何查看和设置文件编码格式相关操作
  • 在linux操作系统上向ftp服务器(linux系统)上上传文件,我要纪录操作日志,得到上传到ftp服务器上的文件的路径问题?
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 请问:如何让对多个现有的文件的写操作成为一个原子操作,并可以实现安全的回滚功能?
  • CentOS yum 源设置为163的源操作步骤及配置文件参考
  • Python文件操作类操作实例详解
  • Linux下u盘文件系统相关操作
  • 客户端如何操作服务器的文件(如查看文件列表,上传,下载)(★)
  • python读文件,写文件操作以及目录操作
  • 什么操作系统能建立文件名大于256的文件
  • 网络技术 iis7站长之家
  • linux下如何对文本文件和记录文件进行插入删除操作啊?
  • 文件操作 多个进程打开文件 不加锁 情况如何
  • 急:如何在一个已经打开的文件中定位,比如在文件中实现指针前移和后移这种操作
  • 怎样让DOS支持长文件名,且能用COPY等原命令对长文件名操作?
  • jsp中对文件操作,怎样判断是否已到文件尾?
  • 救命呀,LINUX删除用户操作后,我的WINDOWS文件系统文件丢失了!在线等!
  • 求助文件操作中修改文件中字段的问题,请大家帮忙解决
  • 看到一个问题不错,我也想知道,就转过来,请教各位:如何让虚拟空间用户不能执行他自己文件外的文件操作命令?
  • 怎样用chmod将一个文件夹中所有文件改为777的权限(即可以进行任何操作)
  • 每个线程都进行申请文件描述符的操作的话,会不会发生文件描述符申请冲突?
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • C++ I/O 成员 flags():操作flags
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • C++ I/O 成员 width():操作域宽度
  • 什么样的操作最耗费服务器的IO操作?
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 无操作系统下对U盘的操作


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3