C#中读取xml文件指定节点
2015-11-24 08:01
686 查看
目录(?)[-]
XmlDocumentSelectSingleNode方法的使用
XmlDocumentSelectNodes方法的使用
通过节点属性查找指定节点
参考:Select XML Nodes by Name
假设xml文件内容是
[c-sharp] view plaincopyprint?
<?xml version="1.0" encoding="utf-8"?>
<Workflow>
<Activity>
<ActivityId>1</ActivityId>
<ActivityName>start</ActivityName>
<BindingPageId>1</BindingPageId>
<BindingRoleId>1</BindingRoleId>
<ActivityLevel>1</ActivityLevel>
</Activity>
<Activity>
<ActivityId>2</ActivityId>
<ActivityName>pass</ActivityName>
<BindingPageId>2</BindingPageId>
<BindingRoleId>2</BindingRoleId>
<ActivityLevel>2</ActivityLevel>
</Activity>
</Workflow>
然后在主函数中调用该方法
[c-sharp] view plaincopyprint?
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
xmlOpr.ReadXmlNode("activity.xml");
Console.Read();
}
}
然后在主函数中调用该方法
[c-sharp] view plaincopyprint?
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
xmlOpr.ReadXmlNodes("activity.xml");
Console.Read();
}
}
然后在主函数中调用该方法
[c-sharp] view plaincopyprint?
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
XmlNode xn=xmlOpr.getXmlNode("activity.xml", "2");
string ActivityId = (xn.SelectSingleNode("ActivityId")).InnerText;
string ActivityName = (xn.SelectSingleNode("ActivityName ")).InnerText;
string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText;
Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel);
Console.Read();
}
}
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
XmlNode xn=xmlOpr.getXmlNode("activity.xml", "2");
string ActivityId = (xn.SelectSingleNode("ActivityId")).InnerText;
string ActivityName = (xn.SelectSingleNode("ActivityName ")).InnerText;
string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText;
Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel);
Console.Read();
}
}
输出结果为:
ActivityId:2 ActivityName:pass ActivityLevel:2
XmlDocumentSelectSingleNode方法的使用
XmlDocumentSelectNodes方法的使用
通过节点属性查找指定节点
参考:Select XML Nodes by Name
假设xml文件内容是
[c-sharp] view plaincopyprint?
<?xml version="1.0" encoding="utf-8"?>
<Workflow>
<Activity>
<ActivityId>1</ActivityId>
<ActivityName>start</ActivityName>
<BindingPageId>1</BindingPageId>
<BindingRoleId>1</BindingRoleId>
<ActivityLevel>1</ActivityLevel>
</Activity>
<Activity>
<ActivityId>2</ActivityId>
<ActivityName>pass</ActivityName>
<BindingPageId>2</BindingPageId>
<BindingRoleId>2</BindingRoleId>
<ActivityLevel>2</ActivityLevel>
</Activity>
</Workflow>
[c-sharp] view plaincopyprint? /// <summary> /// 读取xml中的指定节点的值 /// </summary> public void ReadXmlNode(string filename) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(filename); //读取Activity节点下的数据。SelectSingleNode匹配第一个Activity节点 XmlNode root = xmlDoc.SelectSingleNode("//Activity");//当节点Workflow带有属性是,使用SelectSingleNode无法读取 if (root != null) { string ActivityId = (root.SelectSingleNode("ActivityId")).InnerText; string ActivityName = (root.SelectSingleNode("ActivityName ")).InnerText; string ActivityLevel = root.SelectSingleNode("ActivityLevel").InnerText; Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel); } else { Console.WriteLine("the node is not existed"); //Console.Read(); } } catch (Exception e) { //显示错误信息 Console.WriteLine(e.Message); } } /// <summary> /// 读取xml中的指定节点的值 /// </summary> public void ReadXmlNode(string filename) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(filename); //读取Activity节点下的数据。SelectSingleNode匹配第一个Activity节点 XmlNode root = xmlDoc.SelectSingleNode("//Activity");//当节点Workflow带有属性是,使用SelectSingleNode无法读取 if (root != null) { string ActivityId = (root.SelectSingleNode("ActivityId")).InnerText; string ActivityName = (root.SelectSingleNode("ActivityName ")).InnerText; string ActivityLevel = root.SelectSingleNode("ActivityLevel").InnerText; Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel); } else { Console.WriteLine("the node is not existed"); //Console.Read(); } } catch (Exception e) { //显示错误信息 Console.WriteLine(e.Message); } }
然后在主函数中调用该方法
[c-sharp] view plaincopyprint?
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
xmlOpr.ReadXmlNode("activity.xml");
Console.Read();
}
}
[c-sharp] view plaincopyprint? /// <summary> /// 读取xml中的指定节点的值,如果有多个同名节点,则全部读取 /// </summary> public void ReadXmlNodes(string filename) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(filename); XmlNodeList xnList = xmlDoc.SelectNodes("//Activity"); Console.WriteLine("共有{0}个节点", xnList.Count);//输出xnList中节点个数。 foreach (XmlNode xn in xnList) { //无法使用xn["ActivityId"].InnerText string ActivityId = (xn.SelectSingleNode("ActivityId")).InnerText; string ActivityName = xn.SelectSingleNode("ActivityName").InnerText; string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText; // Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel); Console.WriteLine("ActivityId: {0}/nActivityName: {1}/nActivityLevel: {2}", ActivityId, ActivityName, ActivityLevel); } } catch (Exception e) { //显示错误信息 Console.WriteLine(e.Message); } } /// <summary> /// 读取xml中的指定节点的值,如果有多个同名节点,则全部读取 /// </summary> public void ReadXmlNodes(string filename) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(filename); XmlNodeList xnList = xmlDoc.SelectNodes("//Activity"); Console.WriteLine("共有{0}个节点", xnList.Count);//输出xnList中节点个数。 foreach (XmlNode xn in xnList) { //无法使用xn["ActivityId"].InnerText string ActivityId = (xn.SelectSingleNode("ActivityId")).InnerText; string ActivityName = xn.SelectSingleNode("ActivityName").InnerText; string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText; // Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel); Console.WriteLine("ActivityId: {0}/nActivityName: {1}/nActivityLevel: {2}", ActivityId, ActivityName, ActivityLevel); } } catch (Exception e) { //显示错误信息 Console.WriteLine(e.Message); } }
然后在主函数中调用该方法
[c-sharp] view plaincopyprint?
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
xmlOpr.ReadXmlNodes("activity.xml");
Console.Read();
}
}
[c-sharp] view plaincopyprint? /// <summary> ///通过ActivityLevel获取xmlnode,需要保证ActivityLevel在一个xml文档中是唯一的。 /// </summary> public XmlNode getXmlNode(string filename, string activitylevel) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(filename); XmlNodeList xnList = xmlDoc.SelectNodes("//Activity");//当节点Workflow带有属性是,使用SelectSingleNode无法读取 foreach (XmlNode xn in xnList) { string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText; if(activitylevel==ActivityLevel) { return xn; } } } catch (Exception e) { //显示错误信息 Console.WriteLine(e.Message); } return null; } /// <summary> ///通过ActivityLevel获取xmlnode,需要保证ActivityLevel在一个xml文档中是唯一的。 /// </summary> public XmlNode getXmlNode(string filename, string activitylevel) { XmlDocument xmlDoc = new XmlDocument(); try { xmlDoc.Load(filename); XmlNodeList xnList = xmlDoc.SelectNodes("//Activity");//当节点Workflow带有属性是,使用SelectSingleNode无法读取 foreach (XmlNode xn in xnList) { string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText; if(activitylevel==ActivityLevel) { return xn; } } } catch (Exception e) { //显示错误信息 Console.WriteLine(e.Message); } return null; }
然后在主函数中调用该方法
[c-sharp] view plaincopyprint?
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
XmlNode xn=xmlOpr.getXmlNode("activity.xml", "2");
string ActivityId = (xn.SelectSingleNode("ActivityId")).InnerText;
string ActivityName = (xn.SelectSingleNode("ActivityName ")).InnerText;
string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText;
Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel);
Console.Read();
}
}
class Program
{
static void Main(string[] args)
{
XMLOperation xmlOpr = new XMLOperation();
XmlNode xn=xmlOpr.getXmlNode("activity.xml", "2");
string ActivityId = (xn.SelectSingleNode("ActivityId")).InnerText;
string ActivityName = (xn.SelectSingleNode("ActivityName ")).InnerText;
string ActivityLevel = xn.SelectSingleNode("ActivityLevel").InnerText;
Console.WriteLine("ActivityId:" + ActivityId + "/nActivityName:" + ActivityName + "/nActivityLevel:" + ActivityLevel);
Console.Read();
}
}
输出结果为:
ActivityId:2 ActivityName:pass ActivityLevel:2
相关文章推荐
- c#之如何安全的跨线程访问控件
- C#将图片嵌入网页之中
- C#常量
- C# 中的委托和事件
- C#设计及其UML(反向工程)
- 【C#/算法】RGB、HSV、HSL颜色模型的互相转换
- C# 扩展方法
- C# 预处理器指令
- C#图表控件ZedGraph使用
- C# 多线程,论多核时代爱恨情仇
- c#多线程__Semaphore
- 【C#】——文件夹中获取指定特点的文件名
- C#写入文件的几种方式
- VS2015 新Web项目(C#6)出现CS1617错误的解决
- C# 移动无标题栏窗体的几种方法
- C#之猴子吃桃儿问题的解法——猴子吐桃儿
- C#文件的拆分与合并操作示例
- C#使用进度条,并用线程模拟真实数据 ProgressBar用法(转)
- c#中从string数组转换到int数组
- c#问答篇:对象与引用变量-----初学者的困惑