Rumah pembangunan bahagian belakang Tutorial XML/RSS 详细介绍xml的使用方法总结

详细介绍xml的使用方法总结

Mar 20, 2017 pm 04:47 PM
xml

1、 认识xml

可扩展标记语言,一种用于标记电子文档使其具有结果性的标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

2、 和超文本标记语言区别

2.1 html不一定需要成对出现,xml则一定需要成对出现。

2.2 html 不区分大小写,但是xml区分。

3、对xml文档增删改查

//声明一个XmlDocument空对象
       protected XmlDocument XmlDoc = new XmlDocument();
       /// <summary>
       /// 构造函数,导入xml文件
       /// </summary>
       /// <param name="path"></param>
       public XmlHelper(string path)
       {
           try
           {
               XmlDoc.Load(path);
           }
           catch (Exception ex)
           {
               throw ex;
           }
       }
       /// <summary>
       /// 保存文件
       /// </summary>
       /// <param name="path"></param>
       public void SaveXml(string path)
       {
           try
           {
               XmlDoc.Save(path);
           }
           catch (System.Exception ex)
           {
               throw ex;
           }
       }
Salin selepas log masuk
/// <summary>
       /// 获取节点的子节点的内容
       /// </summary>
       /// <param name="path"></param>
       /// <param name="rootNode"></param>
       /// <param name="attributeName"></param>
       /// <returns></returns>
       public string GetNodeChildAttribute(string path, string rootNode, string attributeName)
       {
           XmlNode xn = XmlDoc.SelectSingleNode(rootNode);
           StringBuilder sb = new StringBuilder();
           XmlNodeList xnl = xn.ChildNodes;
 
           foreach (XmlNode xnf in xnl)
           {
               XmlElement xe = (XmlElement)xnf;
               XmlNodeList xnf1 = xe.ChildNodes;
               foreach (XmlNode xn2 in xnf1)
               {
                   if (xn2.Name == attributeName)
                   {
                       sb.Append(xn2.InnerText);//显示子节点点文本
                   }
               }
           }
           return sb.ToString();
       }
Salin selepas log masuk
/// <summary>
        /// 获取节点的属性值
        /// </summary>
        /// <param name="path">xml路径</param>
        /// <param name="rootNode">根节点名称</param>
        /// <param name="attributeName">属性名称</param>
        /// <returns></returns>
        public string GetNodeAttribute(string path, string rootNode, string attributeName)
        {
            try
            {
                XmlNode xn = XmlDoc.SelectSingleNode(rootNode);
                XmlNodeList xnl = xn.ChildNodes;
                StringBuilder sb = new StringBuilder();
                foreach (XmlNode xnf in xnl)
                {
                    XmlElement xe = (XmlElement)xnf;
                    sb.Append(xe.GetAttribute(attributeName));
                }
                return sb.ToString();
            }
            catch (Exception)
            {
 
                throw;
            }
        }
Salin selepas log masuk
/// <summary>
       /// 删除节点/节点属性
       /// </summary>
       /// <param name="path">xml文件地址</param>
       /// <param name="rootNode">根节点名称</param>
       /// <param name="delNode">要删除的节点</param>
       /// <param name="attributeName">节点属性</param>
       /// <param name="attributeValue">属性值</param>
       public void DeleteNode(string path, string rootNode, string attributeName, string attributeValue)
       {
           try
           {
               XmlNodeList xnl = XmlDoc.SelectSingleNode(rootNode).ChildNodes;
               foreach (XmlNode xn in xnl)
               {
                   XmlElement xe = (XmlElement)xn;
                   if (xe.GetAttribute(attributeName) == attributeValue)
                   {
                       //xe.RemoveAttribute(attributeName);//删除属性
                       xe.RemoveAll();//删除该节点的全部内容
                   }
               }
               SaveXml(path);
           }
           catch (Exception)
           {
 
               throw;
           }
       }
Salin selepas log masuk
/// <summary>
       /// 修改节点的子节点内容
       /// </summary>
       /// <param name="path">xml文件路径</param>
       /// <param name="rootNode">根节点名称</param>
       /// <param name="attributeName">节点的子节点名称</param>
       /// <param name="attributeOldValue">节点的子节点原始内容</param>
       /// <param name="attributeNewValue">节点的子节点新内容</param>
       public void UpdateChildNodeAttribute(string path, string rootNode, string attributeName,string attributeOldValue, string attributeNewValue)
       {
           try
           {
               XmlNodeList nodeList = XmlDoc.SelectSingleNode(rootNode).ChildNodes;//获取根节点的所有子节点
               foreach (XmlNode xn in nodeList)//遍历所有子节点
               {
                   XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
                   if (string.IsNullOrEmpty(attributeName) || string.IsNullOrEmpty(attributeOldValue))
                   {
                       return;
                   }
                   else
                   {
                       XmlNodeList nls = xe.ChildNodes;
                       if (nls != null && nls.Count > 0)
                       {
                           foreach (XmlNode xn1 in nls)//遍历
                           {
                               XmlElement xe2 = (XmlElement)xn1;//转换类型
                               if (xe2.InnerText == attributeOldValue)//如果找到
                               {
                                   xe2.InnerText = attributeNewValue;//则修改
                                   break;//找到退出来就可以了
                               }
                           }
                       }
                   }
               }
               SaveXml(path);
           }
           catch (Exception)
           {
 
               throw;
           }
       }
Salin selepas log masuk
/// <summary>
        /// 修改节点属性值操作
        /// </summary>
        /// <param name="path">xml文件路径</param>
        /// <param name="rootNode">根节点名称,如:bookstore</param>
        /// <param name="attributeName">节点属性名</param>
        /// <param name="attributeOldValue">节点属性原来值</param>
        /// <param name="attributeNewValue">节点属性修改后的值</param>
        public void UpdateNodeAttribute(string path, string rootNode, string attributeName, string attributeOldValue, string attributeNewValue)
        {
            try
            {
                XmlNodeList nodeList = XmlDoc.SelectSingleNode(rootNode).ChildNodes;//获取根节点的所有子节点
                foreach (XmlNode xn in nodeList)//遍历所有子节点
                {
                    XmlElement xe = (XmlElement)xn;//将子节点类型专程xmlelement类型
                    if (string.IsNullOrEmpty(attributeName) || string.IsNullOrEmpty(attributeOldValue))
                    {
                        return;
                    }
                    else
                    {
                        if (xe.GetAttribute(attributeName) == attributeOldValue)
                        {
                            xe.SetAttribute(attributeName, attributeNewValue);
                        }
                    }
                }
                SaveXml(path);
            }
            catch (Exception)
            {
 
                throw;
            }
        }
Salin selepas log masuk
/// <summary>
        /// 插入节点操作
        /// </summary>
        /// <param name="path">xml文件路径</param>
        /// <param name="rootNode">根节点名称,如:bookstore</param>
        /// <param name="node">节点名称,如:book</param>
        /// <param name="nodeAttributes">节点的属性-属性值集合</param>
        /// <param name="childAttributes">节点子节点名称-内容</param>
        public void InsertNode(string path, string rootNode, string node, Dictionary
        <string, string> nodeAttributes, Dictionary<string, string> childAttributes)
        {
            try
            {
                XmlNode root = XmlDoc.SelectSingleNode(rootNode);//找到根节点bookstore
                XmlElement xe1 = XmlDoc.CreateElement(node);//创建子节点book
                if (nodeAttributes != null && nodeAttributes.Count > 0)
                {
                    foreach (var n in nodeAttributes)
                    {
                        xe1.SetAttribute(n.Key, n.Value);
                    }
                }
                if (childAttributes != null && childAttributes.Count > 0)
                {
                    XmlElement xesub1;
                    foreach (var n in childAttributes)
                    {
                        xesub1 = XmlDoc.CreateElement(n.Key);
                        xesub1.InnerText = n.Value;
                        xe1.AppendChild(xesub1);//添加到<book>节点中
                    }
                }
                root.AppendChild(xe1);
                SaveXml(path);
            }
            catch (Exception)
            {
 
                throw;
            }
        }
Salin selepas log masuk

调用:

string path = Server.MapPath("Books.xml");
           XmlHelper xHelper = new XmlHelper(path);
           /*插入*/
           //Dictionary<string, string> dc1 = new Dictionary<string, string>();
           //dc1.Add("genre", "李赞红");
           //dc1.Add("ISBN", "2-3631-4");
           //Dictionary<strin插入g, string> dc2 = new Dictionary<string, string>();
           //dc2.Add("title", "CS从入门到精通");
           //dc2.Add("author", "候捷");
           //dc2.Add("price", "58.3");
           //xHelper.InsertNode(path, "bookstore", "book", dc1, dc2);
 
           /*修改*/
           //xHelper.UpdateNodeAttribute(path, "bookstore", "genre", "李赞红", "李");
           //xHelper.UpdateChildNodeAttribute(path, "bookstore", "title", "CS从入门到精通", "cs");
 
           /*删除节点*/
           //xHelper.DeleteNode(path, "bookstore", "genre", "李");
 
           //Response.Write(xHelper.GetNodeAttribute(path, "bookstore", "genre"));
           //Response.Write(xHelper.GetNodeChildAttribute(path, "bookstore", "price"));
Salin selepas log masuk

4、通过xml数据绑定

xml转DataTable

public DataTable XmlToData(string path, string rootNode, params string[] columns)
       {
           DataTable dt = new DataTable();
           XmlNodeList xn = XmlDoc.SelectSingleNode(rootNode).ChildNodes;
           try
           {
               if (columns.Length > 0)
               {
                   DataColumn dc;
                   for (int i = 0; i < columns.Length; i++)
                   {
                       dc = new DataColumn(columns[i]);
                       dt.Columns.Add(dc);
                   }
                   foreach (XmlNode xnf in xn)
                   {
                       XmlElement xe = (XmlElement)xnf;
                       XmlNodeList xnf1 = xe.ChildNodes;
                       int i = 0;
                       DataRow dr = dt.NewRow();
                       foreach (XmlNode xn2 in xnf1)
                       {
                           dr[i] = xn2.InnerText;
                           i++;
                       }
                       dt.Rows.Add(dr);
                   }
               }
           }
           catch (Exception)
           {
 
               throw;
           }
           return dt;
 
       }
Salin selepas log masuk

调用:

//string[] arr = { "title", "author", "price" };
           //GridView1.DataSource = xHelper.XmlToData(path, "bookstore", arr);
           //GridView1.DataBind();
Salin selepas log masuk

DataTable转xml

/*datatable转xml*/
       public  string DataTableToXml(DataTable dt)
       {
           if (dt != null)
           {
               MemoryStream ms = null;
               XmlTextWriter XmlWt = null;
               try
               {
                   ms = new MemoryStream();
                   //根据ms实例化XmlWt
                   XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
                   //获取ds中的数据
                   dt.WriteXml(XmlWt);
                   int count = (int)ms.Length;
                   byte[] temp = new byte[count];
                   ms.Seek(0, SeekOrigin.Begin);
                   ms.Read(temp, 0, count);
                   //返回Unicode编码的文本
                   UnicodeEncoding ucode = new UnicodeEncoding();
                   string returnValue = ucode.GetString(temp).Trim();
                   return returnValue;
               }
               catch (System.Exception ex)
               {
                   throw ex;
               }
               finally
               {
                   //释放资源
                   if (XmlWt != null)
                   {
                       XmlWt.Close();
                       ms.Close();
                       ms.Dispose();
                   }
               }
           }
           else
           {
               return "";
           }
       }
Salin selepas log masuk

调用:

//bool s = xHelper.CDataToXmlFile(xHelper.XmlToData(path, "bookstore", arr), "Bookss.xml","book");
Salin selepas log masuk

5、xml序列化反序列化

[Serializable]
   public class Person
   {
       public string Name { get; set; }
       public int Age { get; set; }
   }
Salin selepas log masuk
public class CXmlSerializer<T> where T : new()
    {
        private static XmlSerializer _Serializer = new XmlSerializer(typeof(T));
 
        public static string Serialize(T t)
        {
            string s = "";
            using (MemoryStream ms = new MemoryStream())
            {
                _Serializer.Serialize(ms, t);
                s = System.Text.UTF8Encoding.UTF8.GetString(ms.ToArray());
            }
            return s;
        }
 
        public static T Deserialize(string s)
        {
            T t;
            using (MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(s)))
            {
                t = (T)_Serializer.Deserialize(ms);
            }
            return t;
        }
    }
Salin selepas log masuk

调用:

List<Person> list = new List<Person> { new Person { Name = "Xuj", Age = 20 }, new Person { Name = "duj", Age = 20 }, new Person { Name = "fuj", Age = 20 } };
            string s = CXmlSerializer<List<Person>>.Serialize(list);
Salin selepas log masuk

Atas ialah kandungan terperinci 详细介绍xml的使用方法总结. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bolehkah saya membuka fail XML menggunakan PowerPoint? Bolehkah saya membuka fail XML menggunakan PowerPoint? Feb 19, 2024 pm 09:06 PM

Bolehkah fail XML dibuka dengan PPT? XML, Extensible Markup Language (Extensible Markup Language), ialah bahasa markup universal yang digunakan secara meluas dalam pertukaran data dan penyimpanan data. Berbanding dengan HTML, XML lebih fleksibel dan boleh menentukan tag dan struktur datanya sendiri, menjadikan penyimpanan dan pertukaran data lebih mudah dan bersatu. PPT, atau PowerPoint, ialah perisian yang dibangunkan oleh Microsoft untuk membuat pembentangan. Ia menyediakan cara yang komprehensif untuk

Menggunakan Python untuk menggabungkan dan menyahduplikasi data XML Menggunakan Python untuk menggabungkan dan menyahduplikasi data XML Aug 07, 2023 am 11:33 AM

Menggunakan Python untuk menggabungkan dan menyahduplikasi data XML XML (eXtensibleMarkupLanguage) ialah bahasa penanda yang digunakan untuk menyimpan dan menghantar data. Apabila memproses data XML, kadangkala kita perlu menggabungkan berbilang fail XML menjadi satu, atau mengalih keluar data pendua. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan penggabungan dan penyahduplikasian data XML, dan memberikan contoh kod yang sepadan. 1. Penggabungan data XML Apabila kita mempunyai berbilang fail XML, kita perlu menggabungkannya

Menapis dan menyusun data XML menggunakan Python Menapis dan menyusun data XML menggunakan Python Aug 07, 2023 pm 04:17 PM

Melaksanakan penapisan dan pengisihan data XML menggunakan Python Pengenalan: XML ialah format pertukaran data yang biasa digunakan yang menyimpan data dalam bentuk teg dan atribut. Apabila memproses data XML, kami selalunya perlu menapis dan mengisih data. Python menyediakan banyak alat dan perpustakaan yang berguna untuk memproses data XML. Artikel ini akan memperkenalkan cara menggunakan Python untuk menapis dan mengisih data XML. Membaca fail XML Sebelum kita mula, kita perlu membaca fail XML. Python mempunyai banyak perpustakaan pemprosesan XML,

Tukar data XML kepada format CSV dalam Python Tukar data XML kepada format CSV dalam Python Aug 11, 2023 pm 07:41 PM

Tukar data XML dalam Python kepada format CSV XML (ExtensibleMarkupLanguage) ialah bahasa penanda boleh diperluas yang biasa digunakan untuk penyimpanan dan penghantaran data. CSV (CommaSeparatedValues) ialah format fail teks dipisahkan koma yang biasa digunakan untuk import dan eksport data. Semasa memproses data, kadangkala data XML perlu ditukar kepada format CSV untuk analisis dan pemprosesan yang mudah. Python adalah yang kuat

Import data XML ke dalam pangkalan data menggunakan PHP Import data XML ke dalam pangkalan data menggunakan PHP Aug 07, 2023 am 09:58 AM

Mengimport data XML ke dalam pangkalan data menggunakan PHP Pengenalan: Semasa pembangunan, kita sering perlu mengimport data luaran ke dalam pangkalan data untuk pemprosesan dan analisis selanjutnya. Sebagai format pertukaran data yang biasa digunakan, XML sering digunakan untuk menyimpan dan menghantar data berstruktur. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengimport data XML ke dalam pangkalan data. Langkah 1: Menghuraikan fail XML Mula-mula, kita perlu menghuraikan fail XML dan mengekstrak data yang diperlukan. PHP menyediakan beberapa cara untuk menghuraikan XML, yang paling biasa digunakan ialah menggunakan Mudah

Python melaksanakan penukaran antara XML dan JSON Python melaksanakan penukaran antara XML dan JSON Aug 07, 2023 pm 07:10 PM

Python melaksanakan penukaran antara XML dan JSON Pengenalan: Dalam proses pembangunan harian, kita selalunya perlu menukar data antara format yang berbeza. XML dan JSON ialah format pertukaran data biasa Dalam Python, kita boleh menggunakan pelbagai perpustakaan untuk menukar antara XML dan JSON. Artikel ini akan memperkenalkan beberapa kaedah yang biasa digunakan, dengan contoh kod. 1. Untuk menukar XML kepada JSON dalam Python, kita boleh menggunakan modul xml.etree.ElementTree

Mengendalikan ralat dan pengecualian dalam XML menggunakan Python Mengendalikan ralat dan pengecualian dalam XML menggunakan Python Aug 08, 2023 pm 12:25 PM

Mengendalikan Ralat dan Pengecualian dalam XML Menggunakan Python XML ialah format data yang biasa digunakan untuk menyimpan dan mewakili data berstruktur. Apabila kami menggunakan Python untuk memproses XML, kadangkala kami mungkin menghadapi beberapa ralat dan pengecualian. Dalam artikel ini, saya akan memperkenalkan cara menggunakan Python untuk mengendalikan ralat dan pengecualian dalam XML, dan menyediakan beberapa kod sampel untuk rujukan. Gunakan pernyataan cuba-kecuali untuk menangkap ralat penghuraian XML Apabila kami menggunakan Python untuk menghuraikan XML, kadangkala kami mungkin menghadapi beberapa

Python menghuraikan aksara khas dan urutan melarikan diri dalam XML Python menghuraikan aksara khas dan urutan melarikan diri dalam XML Aug 08, 2023 pm 12:46 PM

Python menghuraikan aksara khas dan jujukan melarikan diri dalam XML XML (eXtensibleMarkupLanguage) ialah format pertukaran data yang biasa digunakan untuk memindahkan dan menyimpan data antara sistem yang berbeza. Semasa memproses fail XML, anda sering menghadapi situasi yang mengandungi aksara khas dan urutan melarikan diri, yang boleh menyebabkan ralat penghuraian atau salah tafsiran data. Oleh itu, apabila menghuraikan fail XML menggunakan Python, kita perlu memahami cara mengendalikan aksara khas dan urutan melarikan diri ini. 1. Watak istimewa dan

See all articles