您的位置:首页 > 编程语言 > C#

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?

/// <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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: