.net中xml檔案的基本操作

來源:互聯網
上載者:User

上周做程式的時候用到了一些xml的知識,今天對這一知識點做一小小的總結,若有不足之處還望見諒!

首先呢,xml檔案最重要的就是可以讓使用者自己定義結點,子結點及屬性,這使得存取資訊資源更加方便,上面說的這些自訂的規範都是通過個.xsd的(Schema)模式檔案來做約束的,至於這個檔案怎麼樣編寫,這裡先暫且不談,因為本人也沒有寫過。下面介紹一下在.net中用程式如何讀取與建立一個xml檔案。

1.讀取與建立

XmlDocument是操作xml檔案必須執行個體化的類,讀取現磁碟上已有的xml檔案:

建立一個XmlDocument類的一個執行個體:XmlDocument doc=new XmlDocument();

調用load()方法載入一個磁碟上已有的xml檔案,參數是xml檔案的完整路徑:doc.load("YourXmlFilePath");

下面是用程式建立一個xml檔案:上面說過操作xml檔案必須執行個體化XmlDocument類,建立也應如此:

建立一個XmlDocument類的一個執行個體:XmlDocument doc=new XmlDocument();

XmlDocument類有諸多方法建立xml的結點內容及屬性,當然在結點中又可以包含子節點,下面是一個建立一個簡單xml檔案的例子:

 XmlDocument doc = new XmlDocument();
            XmlElement chartarea = doc.CreateElement("ChartArea"); //建立一個xml元素,可以包括子節點,屬性
            XmlElement series = doc.CreateElement("Series");
            series.SetAttribute("name", "series1"); //給該節點設定屬性
            series.SetAttribute("id","001");
            doc.AppendChild(chartarea); //將該節點另到xml文檔的末尾,在這裡是第一個節點
            chartarea.AppendChild(series);//將第二個節點插入到第一個節點之下
            XmlElement dataPoints = doc.CreateElement("DataPoints"); //第三層節點
            series.AppendChild(dataPoints);
            XmlElement dataPoint = doc.CreateElement("DataPoint");//第四層節點
            dataPoint.SetAttribute("X", "0");
            XmlElement y = doc.CreateElement("Y");
            y.InnerText = "10";
            dataPoints.AppendChild(dataPoint);
            dataPoint.AppendChild(y); //載入

這段程式所得到xml文檔的內容如下:

<ChartArea>
  <Series name="series1" id="001">
    <DataPoints>
      <DataPoint X="0">
        <Y>10</Y>
      </DataPoint>
    </DataPoints>
  </Series>
</ChartArea>

怎麼樣,簡單吧!看到這裡,大家應該要問了,這個結果是怎麼輸出的呢,答案就在下面:

XmlTextWriter writer = new XmlTextWriter(Console.Out); //輸出到控制台
            writer.Formatting = Formatting.Indented;//輸出格式,跟據子項目進行縮排
            doc.WriteContentTo(writer); //將文檔輸出到流
            writer.Flush(); //重新整理基礎流
            doc.Save("c://y.xml") //儲存成物理檔案

 2.從指定節點插入
             XmlNode xmlTmp = doc.SelectSingleNode("ChartMap/ChartAreas/ChartArea/Serieses");//取單一節點
            for (int i = 0; i < 5; i++)//在這面取到的節點下面添加五個DataPoint元素
            {
                XmlElement point1 = doc.CreateElement("DataPoint");
                XmlAttribute xvalue = doc.CreateAttribute("xValue");
                xvalue.InnerText = j.ToString();
                point1.SetAttributeNode(xvalue);
                XmlElement yValue = doc.CreateElement("YValue");
                yValue.InnerText = "20";
                point1.AppendChild(yValue);
                pointsNode.AppendChild(point1);
            }

取多個節點: XmlNodeList nodes = doc.SelectNodes(string xPath);

3.從另外一個xml對象中取到節點以及內容添加到另一個 xml的指定節點下:

using System.Xml;

public class Sample
{
  public static void Main()
  {
     XmlDocument doc = new XmlDocument();
    doc.LoadXml("<bookstore>" +
                "<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" +
                "</book>" +
                "</bookstore>");用字串載入xml文檔

    //讀取另外一個xml檔案

    XmlDocument doc2 = new XmlDocument();
    doc2.Load("books.xml");

    //取doc中指定結點的內容賦值給一個newBook
    XmlNode newBook = doc.ImportNode(doc2.DocumentElement.LastChild, true);
    doc.DocumentElement.AppendChild(newBook);  將newBook添加到doc的根節點下去
    
    doc.Save(Console.Out);

。

  }
}
好了,關於xml檔案的操作到現在為止,我也只瞭解這麼多,就說到這吧!有些地方還是需要多看看msdn的

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.