溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#.Net操作XML

發(fā)布時(shí)間:2020-07-27 20:13:14 來源:網(wǎng)絡(luò) 閱讀:376 作者:Aonaufly 欄目:編程語言

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>
        /// 打印目標(biāo)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 += "節(jié)點(diǎn)名 : " + reader.Name
                        + Environment.NewLine;
                    str += ", 節(jié)點(diǎn)類型 : " + reader.NodeType
                        + Environment.NewLine;
                    str += ", 節(jié)點(diǎn)深度 : " + 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 += ", 節(jié)點(diǎn)的文本值 : " + reader.Value
                            + Environment.NewLine;
                    }
                }
                else
                { 
                }
            }
            reader.Close();
            Console.WriteLine(str);
        }
    }
}

3,創(chuàng)建一個(gè)XML文件

 using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
namespace XmlTest.com
{
    /// <summary>
    /// 模擬沒有xml的時(shí)候重建一個(gè)XML文件
    /// </summary>
    public class XmlWriterDefault
    {
        private readonly string xmlpath;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="xmlpath">xml路徑</param>
        public XmlWriterDefault(string xmlpath)
        {
            this.xmlpath = xmlpath;
        }
        /// <summary>
        /// 編寫一個(gè)基本的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">目標(biāo)XML的地址</param>
        public XmlMainHandler(string xmlPath)
        {
            this.xmlPath = xmlPath;
        }
        /// <summary>
        /// 增加一個(gè)屬性
        /// </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>
        /// 刪除一個(gè)屬性
        /// </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)
            {
                // 定義一個(gè)屬性
                if (targetNote.Attributes[AttributeName] != null)
                {
                    targetNote.Attributes.Remove(targetNote.Attributes[AttributeName]);
                }
                else
                {
                    Console.WriteLine("此節(jié)點(diǎn)沒有'{0}'屬性", AttributeName);
                }
            }
            else
            {
                Console.WriteLine("沒有找到 friends/friend/describe 請檢查");
            }
            xdoc.Save(this.xmlPath);
        }
        /// <summary>
        /// 修改一個(gè)屬性
        /// </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"; //加一個(gè)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>

 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI