簡單記錄在C#操作XML語法
/*以下是在Web Application下使用時記下的筆記*/
//建立網頁相對路徑(App_Data目錄)
string RelativePath = "~/App_Data/" + xmlfilename + ".xml";
//在網站中取得檔案的絕對路徑
AbsoluePath = HttpContext.Current.Server.MapPath(RelativePath ).ToString();
//新增XML文件
XmlDocument xmldoc = new XmlDocument();
//從文字串載入XML
xmldoc.LoadXml(strXml);
//從檔案載入XML
//XML載入、寫入,必需是絕對路徑,相對路徑會被跟系統預設路徑整合,在路徑中多了「~」號,導致查不到
xmldoc.Load(AbsoluePath);
//將XML寫入檔案
//XML載入、寫入,必需是絕對路徑,相對路徑會被跟系統預設路徑整合,在路徑中多了「~」號,導致查不到
xmldoc.Save(AbsoluePath);
//選取單一節點
XmlNode xmlnode = xmldoc.SelectSingleNode("nodename");
//讀取單一節點已存在屬性值
string attValue = xmlnode.Attributes["AttributeName"].Value;
//新增節點(觀念:在xmldoc下新增某個元素,再把元素附加在xmldoc的子節點下)
//這裡建立的是根節點名稱為"xmlelement"→ <xmlelement />
XmlElement xmlelement = xmldoc.CreateElement("xmlelement");
xmldoc.AppendChild(xmlelement);
//新增屬性(觀念:在xmldoc下新增某個屬性,再把屬性附加到某個元素,最後把那個元素附加在xmldoc的子節點)
//承上→ <xmlelement attname_a="attvalue_a" />
XmlAttribute xml_attribute_a = xmldoc.CreateAttribute("attname_a");
xml_attribute_a.Value = "attvalue_a";
xmlelement.Attributes.Append(xml_attribute_a);
xmldoc.AppendChild(xmlelement);
//導出XMLDoc內容
xmldoc.OuterXml;
//取得NodeList(可能很多節點時)
XmlNodeList xmlnodelist = xmldoc.GetElementsByTagName(elementname);
//一組建立xmldoc,新增節點、新增屬性的範例
XmlDocument xmldoc = new XmlDocument();
XmlElement xmlelement = xmldoc.CreateElement("xmlelement");
XmlAttribute xml_attribute_a = xmldoc.CreateAttribute("attname_a");
xml_attribute_a.Value = "attvalue_a";
XmlAttribute xml_attribute_b = xmldoc.CreateAttribute("attname_b");
xml_attribute_b.Value = "attvalue_b";
XmlAttribute xml_attribute_c = xmldoc.CreateAttribute("attname_c");
xml_attribute_c.Value = "attvalue_c";
xmlelement.Attributes.Append(xml_attribute_a);
xmlelement.Attributes.Append(xml_attribute_b);
xmlelement.Attributes.Append(xml_attribute_c);
xmldoc.AppendChild(xmlelement);
//操作檔案系統建立新XML「檔案」
//這裡是先建立空檔,再提供其它地方Load使用,不能直接用xmldoc.Save(路徑) 方式建新實體檔案
//也有在網路看到是將XML先建立在memory stream 再寫檔的
using (XmlWriter writer = XmlWriter.Create(AbsoluePath))
{
writer.WriteStartElement(rootelename);
writer.WriteEndElement();
writer.Flush();
}