c#操作xml文件
主要整理下写过的代码,方便自己以后查找:
工程中首先添加引用:
using System.Da
ta;
using System.Xml;
using System.Xml.Linq;
using System.IO;
(1)读取xml文件内容:
XmlNodeReader xmlReader = null;
try
{
string strNode = "";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("LayerInfo.xml");
xmlReader = new XmlNodeReader(xmlDoc);
while (xmlReader.Read())
{
switch (xmlReader.NodeType)
{
case XmlNodeType.Element:
strNode = xmlReader.Name;
break;
case XmlNodeType.Text:
if (strNode.Equals("name"))
cbLayer.Items.Add(xmlReader.Value);
else if (strNode.Equals("url"))
lstUrl.Add(xmlReader.Value);
else if (strNode.Equals("fields"))
lstFields.Add(xmlReader.Value);
break;
}
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally//清除打开的数据流
{
if (xmlReader != null)
xmlReader.Close();
}
(2)截取xml文件指定节点的信息:
private void ExistRole(string role,string strSecFile)
{
FileStream fs = new FileStream(strSecFile, FileMode.Open, FileAccess.Read);
StreamReader streamReader = new StreamReader(fs, Encoding.Default);
string strContent = streamReader.ReadToEnd();
streamReader.Close();
fs.Close();
Regex r = new Regex(@"<Principal>(.*?)</Principal>");
MatchCollection mc = r.Matches(strContent);
string[] arrRoles=new string[mc.Count];
int i=0;
foreach (Match m in mc)
{
arrRoles[i]=m.ToString().Substring(11,m.ToString().Length-23);
i++;
}
}