上周做程式的時候用到了一些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的