XML一般操作

1. 要對XML文件進行操作,須要聲明以下命名空間

using System.Xml;

2. 檢查指定XML文件是否存在

System.IO.File.Exists(文件路徑及名稱);

3. 利用C#編程創建 XML文件

 代碼一:
XmlDocument xmldoc = new XmlDocument();
XmlNode xmlnode;
XmlElement xmlelem;
XmlElement xmlelem2;
XmlText xmltext;

//加入XML的聲明段落
xmlnode = xmldoc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
xmlnode.InnerText+=" encoding=\"GB2312\"";
xmldoc.AppendChild(xmlnode);

//加入一個根元素
xmlelem = xmldoc.CreateElement("", "ROOT", "");
xmltext = xmldoc.CreateTextNode("Root Text");
xmlelem.AppendChild(xmltext);
xmldoc.AppendChild(xmlelem);

//加入另外一個元素
xmlelem2 = xmldoc.CreateElement("SampleElement");
xmlelem2 = xmldoc.CreateElement("","SampleElement","");
xmltext = xmldoc.CreateTextNode("The text of the sample element");
xmlelem2.AppendChild(xmltext);
xmldoc.ChildNodes.Item(1).AppendChild(xmlelem2);

//保存創建好的XML文檔
try
{
xmldoc.Save("data.xml");
}
catch (Exception f)
{
//顯示錯誤信息
MessageBox.Show(f.Message);
}
//Console.ReadLine();

  這段代碼在win2003ser+vs2005環境下測試成功,但是XML文件格式很亂。

 代碼二:
string FileName =Application.StartupPath+"\\phone.xml";
XmlTextWriter objXmlTextWriter = new XmlTextWriter(FileName,Encoding.Default);

objXmlTextWriter.Formatting = Formatting.Indented;
objXmlTextWriter.Indentation = 6;

objXmlTextWriter.WriteStartDocument();

objXmlTextWriter.WriteStartElement("", "PhoneBook", "");

objXmlTextWriter.WriteStartElement("", "Name", "");
objXmlTextWriter.WriteString("加菲爾德");
objXmlTextWriter.WriteEndElement();

objXmlTextWriter.WriteStartElement("", "Number", "");
objXmlTextWriter.WriteString("5555555");
objXmlTextWriter.WriteEndElement();

objXmlTextWriter.WriteStartElement("", "City", "");
objXmlTextWriter.WriteString("紐約");
objXmlTextWriter.WriteEndElement();

objXmlTextWriter.WriteStartElement("", "DateOfBirth", "");
objXmlTextWriter.WriteString("26/10/1978");
objXmlTextWriter.WriteEndElement();

objXmlTextWriter.WriteEndElement();
objXmlTextWriter.WriteEndDocument();

objXmlTextWriter.Flush();

objXmlTextWriter.Close(); 

  這段代碼在win2003ser+vs2005環境下測試通過,出來的效果很好,也比較容易理解,


4. 讀取、修改XML文件的某個節點的值

 代碼一:

/****************************************************************
<?xml version="1.0" encoding="utf-8" ?>

<configuration>
  <source>
    <LocalEcoTypeData type="User_Anonymous" url="http://url=1"/>
    <LocalDemData type="User_Anonymous" url="http://url=2."/>
    <NasaDemData type="User_Login" url="http://url=3"/>
    <NasaEcoTypeData type="User_Login" url="http://url=4"/>
  </source>
</configuration>
****************************************************************/

  private XmlTextReader xmlread;
  private string XmlUrl = "..\\..\\*.xml";

            xmlread = new XmlTextReader(XmlUrl);
            xmlread.WhitespaceHandling = WhitespaceHandling.None;

            while (xmlread.Read())
             {
                    switch (xmlread.NodeType)
                    {
                        case XmlNodeType.Element:
                        {
                            if (xmlread.Name != "source" && 
                                xmlread.Name != "configuration" &&
                                xmlread["type"] == utype)
                            {
                                lstboxSource.Items.Add(xmlread.Name + "  url:" + xmlread["url"]);
                            }
                            break;
                        }

                        case XmlNodeType.EndElement:
                        {
                            break;
                        }

                    }
}

 代碼二:
string path = "phone.xml"; 
XmlDocument doc = new XmlDocument();
doc.Load(path);

//讀所有節點表
XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);

//讀取節點值
XmlNode node = doc.SelectSingleNode("/PhoneBook/Name", xnm); //node.InnerText 就是讀取出來的值

//修改節點值
node.InnerText="要修改的內容";

//保存修改後的內容
doc.Save(path);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章