1、xmlDocument
2、XmlTextReader
3、Linq To Xml
但是這些方式在讀寫有些帶命名空間的xml時就不知道怎麼辦了(例如把xaml文件當作xml文件來讀寫的時候)。
對於xaml文件,C#雖然能用XamlReader直接把xaml文件轉換爲對象,但是有的時候我們只是想取得其中一些字段,並不想轉換爲對象。
本文就以讀取xml方式來讀寫xaml,給大家做一個示範。
其中xaml文件如下所示,文件名爲test.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:String x:Key="testkey">testStringInnerText</sys:String>
</ResourceDictionary>
1、讀取xaml節點。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("D:\\test.xaml");
//添加命名空間,這一步一定要有,否則讀取不了
XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(xmlDoc.NameTable);
xmlNamespaceManager.AddNamespace("x", "http://schemas.micorsoft.com/winfx/2006/xaml");
xmlNamespaceManager.AddNamespace("sys", "clr-namespace:System;assembly=mscorlib");
XmlNodeList xmlNodeList = xmlDoc.DocumentElement.ChildNodes;
foreach (XmlNode childXmlNode in xmlNodeList)
{
//讀取數據節點(sys:String)
string childName = childXmlNode.Name;
//讀取屬性值(testKey)
string childAttributesValue = childXmlNode.Attributes["x:Key"].Value;
//讀取節點文本(testStringInnerText)
string childInnerText = childXmlNode.InnerText;
//讀取子節點
XmlNodeList childXmlNodeList = childXmlNode.ChildNodes;
}
2、寫入 xaml 節點
var rootXmlDocument=new XmlDocument();
XmlNode xmlNode=new XmlNode();
//需要在這裏生成一個xmlNode節點...
//...
//然後用appendchild方法插入
rootXmlDocument.AppendChild(xmlNode);
XmlElement rootXmlElement=(XmlElement)rootXmlDocument.ChildNodes[0];
//設置命名空間
rootXmlElement.SetAttribute("xmlns","http://schemas.microsoft.com/winfx/2006/xaml/presentation");
rootXmlElement.SetAttribute("xmlns:x","http://schemas.microsoft.com/winfx/2006/xaml");
rootXmlElement.SetAttribute("xmlns:sys","clr-namespace:System;assembly=mscorlib");
rootXmlDocument.Save("D:\\test.xaml");
以上轉載自:http://www.cnblogs.com/Leaco/p/3170729.html