XML随笔

读取Xml节点内容
public void readXml()
{
 string str = "";
            XmlReader re = XmlReader.Create(@"d://s.xml");
            while (re.Read())
            {
                if (re.NodeType == XmlNodeType.Text)
                {
                    str += re.Value+"\r\n";
                }
            }
          console.writeline(str);
}

XmlDocument

下载节点为“title”的内容

public void read()

{

string str="";

 XmlDocument doc = new XmlDocument();
            doc.Load(@"d://s.xml");
            XmlNodeList nod = doc.GetElementsByTagName("title");
            foreach (XmlNode no in nod)
            {
                str += no.OuterXml + "\r\n";
            }

}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace 读取XML
{
    /// <summary>
    /// Xml文件读取器
    /// </summary>

    public class XmlReader : IDisposable
    {
        private string _xmlPath;
        private const string _errMsg = "Error Occurred While Reading ";
        private ListBox _listBox;
        private XmlTextReader xmlTxtRd;

        #region XmlReader 的构造器

        public XmlReader()
        {
            this._xmlPath = string.Empty;
            this._listBox = null;
            this.xmlTxtRd = null;
        }

        /// <summary>
        /// 构造器
        /// </summary>
        /// <param name="_xmlPath">xml文件绝对路径</param>
        /// <param name="_listBox">列表框用于显示xml</param>

        public XmlReader(string _xmlPath, ListBox _listBox)
        {
            this._xmlPath = _xmlPath;
            this._listBox = _listBox;
            this.xmlTxtRd = null;
        }

        #endregion
        #region XmlReader 的资源释放方法

        /// <summary>
        /// 清理该对象所有正在使用的资源

        /// </summary>

        public void Dispose()
        {
            this.Dispose(true);
            GC.SuppressFinalize(this);
        }

        /// <summary>
        /// 释放该对象的实例变量
        /// </summary>
        /// <param name="disposing"></param>

        protected virtual void Dispose(bool disposing)
        {
            if (!disposing)
                return;
            if (this.xmlTxtRd != null)
            {
                this.xmlTxtRd.Close();
                this.xmlTxtRd = null;
            }

            if (this._xmlPath != null)
            {
                this._xmlPath = null;
            }
        }

        #endregion
        #region XmlReader 的属性

        /// <summary>
        /// 获取或设置列表框用于显示xml
        /// </summary>

        public ListBox listBox
        {
            get
            {
                return this._listBox;
            }
            set
            {
                this._listBox = value;
            }
        }

        /// <summary>
        /// 获取或设置xml文件的绝对路径
        /// </summary>

        public string xmlPath
        {
            get
            {
                return this._xmlPath;
            }
            set
            {
                this._xmlPath = value;
            }
        }

        #endregion

        /// <summary>
        /// 遍历Xml文件
        /// </summary>

        public void EachXml()
        {
            this._listBox.Items.Clear();
            this.xmlTxtRd = new XmlTextReader(this._xmlPath);

            try
            {
                while (xmlTxtRd.Read())
                {
                    this._listBox.Items.Add(this.xmlTxtRd.Value);
                }
            }
            catch (XmlException exp)
            {
                throw new XmlException(_errMsg + this._xmlPath + exp.ToString());
            }
            finally
            {
                if (this.xmlTxtRd != null)
                    this.xmlTxtRd.Close();
            }
        }

        /// <summary>
        /// 读取Xml文件的节点类型
        /// </summary>

        public void ReadXmlByNodeType()
        {
            this._listBox.Items.Clear();
            this.xmlTxtRd = new XmlTextReader(this._xmlPath);

            try
            {
                while (xmlTxtRd.Read())
                {
                    this._listBox.Items.Add(this.xmlTxtRd.NodeType.ToString());
                }
            }
            catch (XmlException exp)
            {
                throw new XmlException(_errMsg + this._xmlPath + exp.ToString());
            }
            finally
            {
                if (this.xmlTxtRd != null)
                    this.xmlTxtRd.Close();
            }
        }

        /// <summary>
        /// 根据节点类型过滤Xml文档
        /// </summary>
        /// <param name="xmlNType">XmlNodeType 节点类型的数组</param>

        public void FilterByNodeType(XmlNodeType[] xmlNType)
        {
            this._listBox.Items.Clear();
            this.xmlTxtRd = new XmlTextReader(this._xmlPath);
            try
            {
                while (xmlTxtRd.Read())
                {
                    for (int i = 0; i < xmlNType.Length; i++)
                    {
                        if (xmlTxtRd.NodeType == xmlNType[i])
                        {
                            this._listBox.Items.Add(xmlTxtRd.Name + " is Type " + xmlTxtRd.NodeType.ToString());
                        }
                    }
                }
            }
            catch (XmlException exp)
            {
                throw new XmlException(_errMsg + this.xmlPath + exp.ToString());
            }
            finally
            {
                if (this.xmlTxtRd != null)
                    this.xmlTxtRd.Close();
            }
        }

        /// <summary>
        /// 读取Xml文件的所有文本节点值

        /// </summary>

        public void ReadXmlTextValue()
        {
            this._listBox.Items.Clear();
            this.xmlTxtRd = new XmlTextReader(this._xmlPath);

            try
            {
                while (xmlTxtRd.Read())
                {
                    if (xmlTxtRd.NodeType == XmlNodeType.Text)
                    {
                        this._listBox.Items.Add(xmlTxtRd.Value);
                    }
                }
            }
            catch (XmlException xmlExp)
            {
                throw new XmlException(_errMsg + this._xmlPath + xmlExp.ToString());
            }
            finally
            {
                if (this.xmlTxtRd != null)
                    this.xmlTxtRd.Close();
            }
        }

        /// <summary>
        /// 读取Xml文件的属性
        /// </summary>

        public void ReadXmlAttributes()
        {
            this._listBox.Items.Clear();
            this.xmlTxtRd = new XmlTextReader(this._xmlPath);

            try
            {
                while (xmlTxtRd.Read())
                {
                    if (xmlTxtRd.NodeType == XmlNodeType.Element)
                    {
                        if (xmlTxtRd.HasAttributes)
                        {
                            this._listBox.Items.Add("The Element " + xmlTxtRd.Name + " has " + xmlTxtRd.AttributeCount + " Attributes");

                            this._listBox.Items.Add("The Attributes are:");

                            while (xmlTxtRd.MoveToNextAttribute())
                            {
                                this._listBox.Items.Add(xmlTxtRd.Name + " = " + xmlTxtRd.Value);
                            }
                        }
                        else
                        {
                            this._listBox.Items.Add("The Element " + xmlTxtRd.Name + " has no Attribute");
                        }
                        this._listBox.Items.Add("");
                    }
                }
            }
            catch (XmlException xmlExp)
            {
                throw new XmlException(_errMsg + this._xmlPath + xmlExp.ToString());
            }
            finally
            {
                if (this.xmlTxtRd != null)
                    this.xmlTxtRd.Close();
            }
        }

        /// <summary>
        /// 读取Xml文件的命名空间
        /// </summary>

        public void ReadXmlNamespace()
        {
            this._listBox.Items.Clear();
            this.xmlTxtRd = new XmlTextReader(this._xmlPath);
            try
            {
                while (xmlTxtRd.Read())
                {
                    if (xmlTxtRd.NodeType == XmlNodeType.Element && xmlTxtRd.Prefix != "")
                    {
                        this._listBox.Items.Add("The Prefix " + xmlTxtRd.Prefix + " is associated with namespace " + xmlTxtRd.NamespaceURI);

                        this._listBox.Items.Add("The Element with the local name " + xmlTxtRd.LocalName + " is associated with" + " the namespace " + xmlTxtRd.NamespaceURI);
                    }

                    if (xmlTxtRd.NodeType == XmlNodeType.Element && xmlTxtRd.HasAttributes)
                    {
                        while (xmlTxtRd.MoveToNextAttribute())
                        {
                            if (xmlTxtRd.Prefix != "")
                            {
                                this._listBox.Items.Add("The Prefix " + xmlTxtRd.Prefix + " is associated with namespace " + xmlTxtRd.NamespaceURI);

                                this._listBox.Items.Add("The Attribute with the local name " + xmlTxtRd.LocalName + " is associated with the namespace " + xmlTxtRd.NamespaceURI);

                            }
                        }
                    }
                }
            }
            catch (XmlException xmlExp)
            {
                throw new XmlException(_errMsg + this._xmlPath + xmlExp.ToString());
            }
            finally
            {
                if (this.xmlTxtRd != null)
                    this.xmlTxtRd.Close();
            }
        }

        /// <summary>
        /// 读取整个Xml文件
        /// </summary>

        public void ReadXml()
        {
            string attAndEle = string.Empty;
            this._listBox.Items.Clear();
            this.xmlTxtRd = new XmlTextReader(this._xmlPath);

            try
            {
                while (xmlTxtRd.Read())
                {
                    if (xmlTxtRd.NodeType == XmlNodeType.XmlDeclaration)
                        this._listBox.Items.Add(string.Format("<?{0} {1} ?>", xmlTxtRd.Name, xmlTxtRd.Value));
                    else if (xmlTxtRd.NodeType == XmlNodeType.Element)
                    {
                        attAndEle = string.Format("<{0} ", xmlTxtRd.Name);
                        if (xmlTxtRd.HasAttributes)
                        {
                            while (xmlTxtRd.MoveToNextAttribute())
                            {
                                attAndEle = attAndEle + string.Format("{0}='{1}' ", xmlTxtRd.Name, xmlTxtRd.Value);
                            }
                        }

                        attAndEle = attAndEle.Trim() + ">";
                        this._listBox.Items.Add(attAndEle);
                    }
                    else if (xmlTxtRd.NodeType == XmlNodeType.EndElement)
                        this._listBox.Items.Add(string.Format("</{0}>", xmlTxtRd.Name));
                    else if (xmlTxtRd.NodeType == XmlNodeType.Text)
                        this._listBox.Items.Add(xmlTxtRd.Value);
                }
            }
            catch (XmlException xmlExp)
            {
                throw new XmlException(_errMsg + this._xmlPath + xmlExp.ToString());
            }
            finally
            {
                if (this.xmlTxtRd != null)
                    this.xmlTxtRd.Close();
            }
        }
    }
}

原文地址:https://www.cnblogs.com/happygx/p/1957860.html