三月 15

XDocument是Linq所提供的一個關於XML的類別
但有的時候我們所使用的方法要求傳入的是XmlDocument
但是在傳入之前,我們想要針對這個XML檔案做一些處理後,再傳進去
這時候就可以利用XDocument,經由Linq處理後,再轉成XmlDocument丟進去
註:用了Linq to XML,終於可以離開之前寫XML相關處理的惡夢,Linq真是個好東西

話不多說了,直接來看程式吧

using System.Xml.Linq;
XDocument XDoc = XDocument.Load(Log4NetConfigXMLFilePath);
var nodes = (from p in XDoc.Elements("log4net")
                  .Elements("appender")
                  .Elements("file")
             elect p).FirstOrDefault();
//使用Linq Select出來後,進行處理
nodes.SetAttributeValue("value",HttpContext.Current.Server.MapPath("~/") + 
                                 nodes.Attribute("value").Value);
//轉出來後再放到XmlDocument
System.Xml.XmlDocument XmlDoc = new System.Xml.XmlDocument();
//把XDocument轉成XmlDocument
XmlDoc.LoadXml(XDoc.Document.ToString());