zoukankan      html  css  js  c++  java
  • C# 各种操作xml 简单介绍

       直接上代码大家一看就明白了...


                    // xml容器有xmldocuent ,xdocument .xpathdocument///
                    /////// xml 加载文件方式分为三种 一,直接xmldoc.load(path) 二.xmldoc.loadxml(string text),三.xmldoc.load(stream strem)///////
                    //用linq 加载操作xml///
                    var doc1 = XDocument.Load(Server.MapPath("Test.xml"));
                    string path = Server.MapPath("Test.xml");
                    Readstreamxml(path);
                    ReadXml(path);
                    string str = @"<Customers><Customer id='01' city='Beijing' country='China' name='Lenovo'/></Customers>";
                    // linq 加载方式 //
                    var doc2 = XDocument.Parse(str);
                    ///xmldco 加载方式//
                    XmlDocument xmldoc = new XmlDocument();
                    xmldoc.LoadXml(str);
                    //xpathdocument 是只读容器///
                    XPathDocument document = new XPathDocument(path);
                    XPathNavigator navigator = document.CreateNavigator();
                    XPathNodeIterator nodes = navigator.Select("/Customers/Customer");
                    while (nodes.MoveNext())
                    {
                        Console.WriteLine(nodes.Current.Name);
                    }
                    //xmldocument xpath 查询//
                    XmlNodeList nodelist = xmldoc.SelectNodes("/Customers/Customer");

                    //linq xpath 查询//
                    var result = from customer in doc1.Descendants("Customer")
                                 select customer.Value;
                    foreach (var s in result)
                    {
                        Console.WriteLine(s);
                    }
                    var results = (from order in doc1.Descendants("Order")
                                   where order.Attribute("OrderID").Value == "1003"
                                   select new
                                   {
                                       CustomerID = order.Parent.Attribute("id").Value,
                                       Freight = (decimal)order.Attribute("Freight")
                                   }).FirstOrDefault();
                    Console.WriteLine(string.Format("Customer ID: {0} Freight: {1}", results.CustomerID, results.Freight));

    /// <summary>
            /// 以文件 流的方式读取
            /// </summary>
            /// <param name="path"></param>
            private void Readstreamxml(string path)
            {
                using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.ReadWrite))
                {
                    XmlDocument xmldoc = new XmlDocument();
                    xmldoc.Load(file);
                    XmlNode root = xmldoc.SelectSingleNode("Customers");
                    XmlElement xe1 = xmldoc.CreateElement("c");
                    root.AppendChild(xe1);
                    file.SetLength(0);//将文件指针移到起始位置
                    xmldoc.Save(file);

                }

            }

            //以xmlreader 方式读出xml//

            public void ReaderXml(string path)
            {
                XmlReaderSettings xmlsetting = new XmlReaderSettings();
                xmlsetting.ProhibitDtd = false;
                StringBuilder str = new StringBuilder();
                XmlReader xmlreader = XmlReader.Create(path, xmlsetting);
                while (xmlreader.Read())
                {
                    switch (xmlreader.NodeType)
                    {
                        case XmlNodeType.Element:
                            if (xmlreader.IsEmptyElement)
                            {
                                str.Append(string.Format("name:{0}", xmlreader.Name));
                            }
                            else
                            {
                                str.Append(xmlreader.Name);
                                if (xmlreader.HasAttributes)
                                {

                                    while (xmlreader.MoveToNextAttribute())
                                    {
                                        str.AppendFormat("{0}={1}", xmlreader.Name, xmlreader.Value);
                                    }
                                }

                            }
                            break;
                        //后面还有一结点类型//
                    }

                }

            }
            /// <summary>
            /// 以textreader方式读取
            /// </summary>
            /// <param name="path"></param>
            /// <returns></returns>
            private string ReadXml(string path)
            {

                //string xmlFile = Server.MapPath(path);

                XmlTextReader reader = new XmlTextReader(path);

                StringBuilder str = new StringBuilder();



                while (reader.Read())
                {

                    switch (reader.NodeType)
                    {

                        case XmlNodeType.Element:

                            str.Append("Element: <b>").Append(reader.Name).Append("</b><br />");

                            break;

                        case XmlNodeType.Text:

                            str.Append(" - Value: <b>").Append(reader.Value).Append("</b><br />");

                            break;

                        case XmlNodeType.XmlDeclaration:

                            str.Append("Xml Declaration: <b>");

                            str.Append(reader.Name).Append(" ").Append(reader.Value).Append("</b><br />");

                            break;

                    }



                    if (reader.AttributeCount > 0)
                    {

                        while (reader.MoveToNextAttribute())
                        {

                            str.Append(" - Attribute: <b>").Append(reader.Name);

                            str.Append("</b> Value: <b>").Append(reader.Value).Append("</b><br />");

                        }

                    }

                }

                reader.Close();

                return str.ToString();

            }

  • 相关阅读:
    109 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 05 问题解析--通过一个方法完成学生和专业的双向关联
    108 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 04 问题解析--数组未实例化造成的空指针异常
    107 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 03 编写方法完成学生个数统计功能
    106 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 02 新增属性完成学生信息存储
    105 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 03 新增功能及实现 01 新增需求及分析
    session与cookie的区别和联系
    session和cookie的区别
    Web服务器主动推送技术
    webSocket的场景应用
    TCP、Http和Socket 优劣比较
  • 原文地址:https://www.cnblogs.com/cxlings/p/2784405.html
Copyright © 2011-2022 走看看