C#讀寫XML文檔



C#讀取XML文檔

使用XMLDocument對象,可以很方便的讀取XML文檔,C#中對XML的操作進行的封裝,相比較於C++,則要方便很多。

下面是樣例XML文檔:

 

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2. <!--This is a continent file to contain all continent in our world-->  
  3. <Root>  
  4.   <Continents>  
  5.     <Continent ID="101" Name="Asia" />  
  6.     <Continent ID="102" Name="Africa" />  
  7.     <Continent ID="103" Name="North America" />  
  8.     <Continent ID="104" Name="South America" />  
  9.     <Continent ID="105" Name="Europe" />  
  10.     <Continent ID="106" Name="Oceania" />  
  11.     <Continent ID="107" Name="Antarctica" />  
  12.   </Continents>  
  13. </Root>  
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--This is a continent file to contain all continent in our world-->
<Root>
  <Continents>
    <Continent ID="101" Name="Asia" />
    <Continent ID="102" Name="Africa" />
    <Continent ID="103" Name="North America" />
    <Continent ID="104" Name="South America" />
    <Continent ID="105" Name="Europe" />
    <Continent ID="106" Name="Oceania" />
    <Continent ID="107" Name="Antarctica" />
  </Continents>
</Root>


讀取該文檔的樣例代碼如下:

  1. string strFilePathName = strFilePath + "\\Continent.xml";  
  2. List<Continent> data = new List<Continent>();  
  3. Console.WriteLine("The data is parsed from file :" + strFilePathName);  
  4.   
  5. try  
  6. {  
  7.     XmlDocument xmlDoc = new XmlDocument();  
  8.     xmlDoc.Load(strFilePathName);  
  9.   
  10.     XmlNode xmlNode = xmlDoc.SelectSingleNode("Root");  
  11.     if (xmlNode == null)  
  12.     {  
  13.         Console.WriteLine("Invalid file format!");  
  14.         return;  
  15.     }  
  16.   
  17.     XmlNode continentNode = xmlNode.FirstChild;  
  18.     foreach (XmlNode node in continentNode.ChildNodes)  
  19.     {  
  20.         uint uiID = uint.Parse(node.Attributes["ID"].Value);  
  21.         string strName = node.Attributes["Name"].Value;  
  22.   
  23.         data.Add(new Continent(uiID, strName));  
  24.     }  
  25.   
  26. }  
  27. catch (Exception ex)  
  28. {  
  29.     Console.WriteLine(ex.Message);  
  30. }  
  31.   
  32. Console.WriteLine("Parsed OK, result:");  
  33.   
  34. foreach (Continent info in data)  
  35. {  
  36.     Console.WriteLine("ID= " + info.ID + ", Name = " + info.Name);  
  37. }  
            string strFilePathName = strFilePath + "\\Continent.xml";
            List<Continent> data = new List<Continent>();
            Console.WriteLine("The data is parsed from file :" + strFilePathName);

            try
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(strFilePathName);

                XmlNode xmlNode = xmlDoc.SelectSingleNode("Root");
                if (xmlNode == null)
                {
                    Console.WriteLine("Invalid file format!");
                    return;
                }

                XmlNode continentNode = xmlNode.FirstChild;
                foreach (XmlNode node in continentNode.ChildNodes)
                {
                    uint uiID = uint.Parse(node.Attributes["ID"].Value);
                    string strName = node.Attributes["Name"].Value;

                    data.Add(new Continent(uiID, strName));
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine("Parsed OK, result:");

            foreach (Continent info in data)
            {
                Console.WriteLine("ID= " + info.ID + ", Name = " + info.Name);
            }


C# 寫XML文檔

C#寫XMl文檔也比較簡單,首先使用XMLDocument對象創建XML文檔,然後寫入XMLWriter流,進行flush就行了。

下面是樣例代碼:

  1. string strFilePathName = strFilePath + "\\Continent.xml";  
  2.   
  3. // write  
  4. // Asia, Africa, North America, South America,Europe, Oceania, Antarctica  
  5. List<Continent> data = new List<Continent>();  
  6. uint uiIDBegin = 101;  
  7. data.Add(new Continent(uiIDBegin++, "Asia"));  
  8. data.Add(new Continent(uiIDBegin++, "Africa"));  
  9. data.Add(new Continent(uiIDBegin++, "North America"));  
  10. data.Add(new Continent(uiIDBegin++, "South America"));  
  11. data.Add(new Continent(uiIDBegin++, "Europe"));  
  12. data.Add(new Continent(uiIDBegin++, "Oceania"));  
  13. data.Add(new Continent(uiIDBegin++, "Antarctica"));  
  14.   
  15. foreach (Continent info in data)  
  16. {  
  17.     Console.WriteLine("ID= " + info.ID + ", Name = " + info.Name);  
  18. }  
  19.   
  20. Console.WriteLine("The data will write to file :" + strFilePathName);  
  21.   
  22. try  
  23. {  
  24.     XmlDocument xmlDoc = new XmlDocument();  
  25.     XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0""UTF-8""yes");  
  26.     XmlComment xmlComment = xmlDoc.CreateComment("This is a continent file to contain all continent in our world");  
  27.     XmlElement xmlRoot = xmlDoc.CreateElement("Root");  
  28.     XmlElement xmlContinents = xmlDoc.CreateElement("Continents");  
  29.     xmlRoot.AppendChild(xmlContinents);  
  30.   
  31.     foreach (Continent info in data)  
  32.     {  
  33.         XmlElement xmlContinent = xmlDoc.CreateElement("Continent");  
  34.         xmlContinents.AppendChild(xmlContinent);  
  35.         xmlContinent.SetAttribute("ID", info.ID.ToString());  
  36.         xmlContinent.SetAttribute("Name", info.Name);  
  37.     }  
  38.   
  39.     xmlDoc.AppendChild(xmlDec);  
  40.     xmlDoc.AppendChild(xmlComment);  
  41.     xmlDoc.AppendChild(xmlRoot);  
  42.   
  43.   
  44.     XmlWriterSettings wrSettings = new XmlWriterSettings();  
  45.     wrSettings.Indent = true;  
  46.     wrSettings.Encoding = UnicodeEncoding.UTF8;  
  47.     XmlWriter xmlWr = XmlWriter.Create(strFilePathName, wrSettings);  
  48.     xmlDoc.WriteTo(xmlWr);  
  49.     xmlWr.Flush();  
  50.   
  51.     Console.WriteLine("Create OK, file name = " + strFilePathName);  
  52. }  
  53. catch (Exception ex)  
  54. {  
  55.     Console.WriteLine(ex.Message);  
  56. }  
            string strFilePathName = strFilePath + "\\Continent.xml";

            // write
            // Asia, Africa, North America, South America,Europe, Oceania, Antarctica
            List<Continent> data = new List<Continent>();
            uint uiIDBegin = 101;
            data.Add(new Continent(uiIDBegin++, "Asia"));
            data.Add(new Continent(uiIDBegin++, "Africa"));
            data.Add(new Continent(uiIDBegin++, "North America"));
            data.Add(new Continent(uiIDBegin++, "South America"));
            data.Add(new Continent(uiIDBegin++, "Europe"));
            data.Add(new Continent(uiIDBegin++, "Oceania"));
            data.Add(new Continent(uiIDBegin++, "Antarctica"));

            foreach (Continent info in data)
            {
                Console.WriteLine("ID= " + info.ID + ", Name = " + info.Name);
            }

            Console.WriteLine("The data will write to file :" + strFilePathName);

            try
            {
                XmlDocument xmlDoc = new XmlDocument();
                XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
                XmlComment xmlComment = xmlDoc.CreateComment("This is a continent file to contain all continent in our world");
                XmlElement xmlRoot = xmlDoc.CreateElement("Root");
                XmlElement xmlContinents = xmlDoc.CreateElement("Continents");
                xmlRoot.AppendChild(xmlContinents);

                foreach (Continent info in data)
                {
                    XmlElement xmlContinent = xmlDoc.CreateElement("Continent");
                    xmlContinents.AppendChild(xmlContinent);
                    xmlContinent.SetAttribute("ID", info.ID.ToString());
                    xmlContinent.SetAttribute("Name", info.Name);
                }

                xmlDoc.AppendChild(xmlDec);
                xmlDoc.AppendChild(xmlComment);
                xmlDoc.AppendChild(xmlRoot);


                XmlWriterSettings wrSettings = new XmlWriterSettings();
                wrSettings.Indent = true;
                wrSettings.Encoding = UnicodeEncoding.UTF8;
                XmlWriter xmlWr = XmlWriter.Create(strFilePathName, wrSettings);
                xmlDoc.WriteTo(xmlWr);
                xmlWr.Flush();

                Console.WriteLine("Create OK, file name = " + strFilePathName);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }


 

後記:

這裏僅僅是個簡單的例子,以備往後複製黏貼之用,呵呵!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章