C#.Net操作XML

1,读取Rss订阅XML文件:读取线上的XML

 using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
namespace XmlTest.com
{
    /// <summary>
    /// 获得线上的Rss信息 / XML格式的</br>
    /// 订阅信息
    /// </summary>
    public class LoadOnlineXml
    {
        private readonly string rssPath;
        private readonly string encoding;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="rssPath"> Rss地址 , 如 : http://news.163.com/special/00011K6L/rss_newstop.xml </param>
        /// <param name="encoding"> 此Rss的编码格式</param>
        public LoadOnlineXml(string rssPath , string encoding )
        {
            this.rssPath = rssPath;
            this.encoding = encoding;
        }
        /// <summary>
        /// 打印目标Rss
        /// </summary>
        public void writeRss()
        {
            WebClient web = new WebClient();
            Stream stream = web.OpenRead(this.rssPath);
            StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(this.encoding));
            string rssText = reader.ReadToEnd();
            Console.WriteLine(rssText);
            stream.Close();
            reader.Close();
        }
    }
}

2,读取XML

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace XmlTest.com
{
    /// <summary>
    /// 读取XML
    /// </summary>
    public class ReaderXml
    {
        private readonly string xmlPath;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="xmlPath">XML的地址</param>
        public ReaderXml(string xmlPath)
        {
            this.xmlPath = xmlPath;
        }
        /// <summary>
        /// 读XML信息
        /// </summary>
        public void readXML()
        {
            string str = "";
            XmlReader reader = XmlReader.Create( this.xmlPath );
            int i = 0 , j = 0;
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    str += "节点名 : " + reader.Name
                        + Environment.NewLine;
                    str += ", 节点类型 : " + reader.NodeType
                        + Environment.NewLine;
                    str += ", 节点深度 : " + reader.Depth
                        + Environment.NewLine;
                    if (reader.HasAttributes) // 是否存在属性
                    {
                        for (i = 0, j = reader.AttributeCount; i < j; i += 1)
                        {
                            reader.MoveToAttribute(i);
                            str += " 属性 : " + reader.Name + " 值为 : " + reader.Value
                                + Environment.NewLine;
                        }
                    }
                }
                else if ( reader.NodeType == XmlNodeType.Text )
                {
                    if (reader.HasValue)  //是否存在文本值
                    {
                        str += ", 节点的文本值 : " + reader.Value
                            + Environment.NewLine;
                    }
                }
                else
                { 
                }
            }
            reader.Close();
            Console.WriteLine(str);
        }
    }
}

3,创建一个XML文件

 using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
namespace XmlTest.com
{
    /// <summary>
    /// 模拟没有xml的时候重建一个XML文件
    /// </summary>
    public class XmlWriterDefault
    {
        private readonly string xmlpath;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="xmlpath">xml路径</param>
        public XmlWriterDefault(string xmlpath)
        {
            this.xmlpath = xmlpath;
        }
        /// <summary>
        /// 编写一个基本的XML文件
        /// </summary>
        ///<param name="encoding"> 编码格式  </param>
        public void writerDefault( Encoding encoding )
        { 
            if ( !File.Exists( this.xmlpath ) )
            {
                XmlWriterSettings writer = new XmlWriterSettings();
                writer.Encoding = encoding;
                using( XmlWriter w = XmlWriter.Create( this.xmlpath , writer ))
                {
                    w.WriteStartElement("fristElement");
                    w.WriteAttributeString("name" , "Ainy");
                    w.WriteAttributeString("gender", "male");
                    w.WriteEndElement();
                    w.Flush();
                }
            }
        }
    }
}

4 , 核心操作

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace XmlTest.com
{
    /// <summary>
    /// 对XML信息的增,删,改
    /// </summary>
    public class XmlMainHandler
    {
        private readonly string xmlPath;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="xmlPath">目标XML的地址</param>
        public XmlMainHandler(string xmlPath)
        {
            this.xmlPath = xmlPath;
        }
        /// <summary>
        /// 增加一个属性
        /// </summary>
        /// <param name="name"> 属性名称 </param>
        /// <param name="value"> 属性值 </param>
        public void addAttribute(string name, string value , string targetName )
        {
            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(this.xmlPath);
            foreach (XmlElement xElement in xdoc.DocumentElement.ChildNodes)
            {
                foreach (XmlElement xE in xElement.ChildNodes)
                {
                    Console.WriteLine("属性值 : " + xE.GetAttribute("name"));
                    if (xE.GetAttribute("name") == targetName)
                    {
                        XmlAttribute xA = xdoc.CreateAttribute(name);
                        xA.Value = value;
                        xE.Attributes.Append(xA);
                        break;
                    }
                }
            }
            xdoc.Save(this.xmlPath);
        }
        /// <summary>
        /// 删除一个属性
        /// </summary>
        /// <param name="AttributeName"></param>
        public void removeAttribute(string AttributeName)
        {
            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(this.xmlPath);
            XmlNode targetNote = xdoc.SelectSingleNode(@"friends/friend/describe"); //!important : 第一次找到的friends/friend/describe , 如果没有找到,返回null
            if (targetNote != null)
            {
                // 定义一个属性
                if (targetNote.Attributes[AttributeName] != null)
                {
                    targetNote.Attributes.Remove(targetNote.Attributes[AttributeName]);
                }
                else
                {
                    Console.WriteLine("此节点没有‘{0}‘属性", AttributeName);
                }
            }
            else
            {
                Console.WriteLine("没有找到 friends/friend/describe 请检查");
            }
            xdoc.Save(this.xmlPath);
        }
        /// <summary>
        /// 修改一个属性
        /// </summary>
        /// <param name="AttributeName"></param>
        /// <param name="value"></param>
        public void editorAttribute(string AttributeName, string value)
        {
            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(this.xmlPath);
            XmlNodeList targetList = xdoc.SelectNodes(@"friends/friend/base");
            foreach (XmlNode target in targetList)
            {
                if (target.Attributes[AttributeName] != null)
                {
                    if (target.Attributes[AttributeName].Value == "eisa")
                    {
                        target.Attributes[AttributeName].Value = "eisa-" + value;
                        target.InnerText = "XXX"; //加一个Text
                        xdoc.Save(this.xmlPath);
                        return;
                    }
                }
            }
            Console.WriteLine("修改属性 失败");
        }
    }
}

附件 : XML    friends.xml

 <?xml version="1.0" encoding="utf-8"?>
<friends>
  <friend>
    <base name="eisa-snow" tel="135244&&&" gender="female">XXX</base>
    <describe>my ---</describe>
  </friend>
  <friend>
    <base name="kawen" tel="13533449078" gender="male" 亲密度="80%" />
    <describe>my ****</describe>
  </friend>
</friends>
时间: 2024-10-03 02:00:32

C#.Net操作XML的相关文章

php操作xml小结

<?php #php操作xml,SimpleXMLElement类小结 header('Content-type:text/html;charset=utf-8;'); //1.构造函数 /* $xmlstring=<<<XML <?xml version="1.0" encoding="utf-8"?> <note  xmlns:b="http://www.w3school.com.cn/example/&quo

使用Dom4j操作XML数据

--------------siwuxie095 dom4j 是一个非常优秀的 Java XML 的 API, 用来读写 XML 文件 和操作 XML 数据 特点:性能优异.功能强大.极端易用 dom4j 的下载链接:http://www.dom4j.org/dom4j-1.6.1/ 将 dom4j-1.6.1.zip 解压一览: 工程名:TestDom4j 包名:com.siwuxie095.dom4j 类名:Test.java 打开资源管理器,在工程 TestDom4j 文件夹下,创建一个

dom4j操作xml对象

// 获取Documen对象 public static Document getDocument(String path) throws Exception{ // 解析器对象 SAXReader reader = new SAXReader(); // 解析 return reader.read(path); } // 回写(XMLWriter) public static void writeXml(Document document,String path) throws Excepti

转载:用Ant操作XML文件

1.14 用XMLTask操作XML(1) 本节作者:Brian Agnew 对于简单的文本搜索和替换操作,Ant的<replace>任务就够用了,但在现代Java框架中,用户更可能需要强大的XML操作能力来修改servlet描述符.Spring配置等. XMLTask是Ant外部任务,它提供了强大的XML编辑工具,主要用于在构建/部署过程中创建和修改XML文件. 使用XMLTask的好处如下? 与Ant的<replace>任务不同,XMLTask使用XPath提供识别XML文档各

简单操作XML

第一部分 什么是XML? XML, Extensible Markup Language ,可扩展标记语言,主要用途是描述和交换数据.它的一个用处是配置文件,用来保存数据库连接字符串.端口.IP.日志保存路径等参数.我们可以使用文本文件来保存文件,使用 key = value, key2 = value2 ,...... 的方式来保存数据.这样做的坏处是结构比较不规矩,读取起来也不方便,需要自行编写一长串的if / else 语句.为了解决这些问题,我们可以使用XML. XML定义了一组规则,即

C#操作XML增删改查

XML文件是一种常用的文件格式,不管是B/S还是C/S都随处可见XML的身影.Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具.XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用.微软也提供了一系列类库来倒帮助我们在应用程序中存储XML文件. “在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型

delphi操作xml学习笔记 之一 入门必读

Delphi 对XML的支持---TXMLDocument类 Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocument把XML文档读到内存中,从而可以进行编辑.保存操作.TXMLDocument类是通过DOM(文档对象模型)接口来访问XML文档中的各个元素的.对于DOM接口的实现有多种方式,Delphi支持的方式有:1)微软的MSXML SDK,这种方式是通过COM对象来实现:2) Apache 的Xerces的实现方式

Delphi 操作 XML(一)

一.欢迎 本帮助文件提供从SimDesign BV的NativeXml组件的信息. 二.购买NativeXml! NativeXml现在是开源的,但支持是仅专门适用于购买NativeXml的客户. 您可以通过此链接购买NativeXml:http://www.simdesign.nl/xml.html 价格:29.95欧元 采购NativeXml的优势: 两年的通过电子邮件或特殊的"NativeXml Source"论坛支持,接收测试和修正,并从"NativeXml Sour

delphi 操作 XML (二)

在装有Win7 32位系统的台式机上 先卸载旧驱动,再重新安装. 对设备管理器里的U转串口设备从本地更新驱动,选择下图文件 系统弹出红色提示框(是否安装XXXX驱动),选择安装,随后该设备由无法启动变为工作正常. 在Win8 64位系统上 安装驱动后,出现下图情况,设备无法启动(错误代码10) 选择08年的驱动后,串口恢复正常. 总结 这些驱动有很多不兼容的,特别是在高级Windows版本或64位系统上,解决的思路就是多尝试安装各种版本,并根据串口状态调整安装策略. delphi 操作 XML

C#操作XML学习(一)

一.简单介绍 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml")); //指定一个节点 XmlNode root=xml.SelectSingleNode("/root"); //获取节点下所有直接