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

用XML结点的属性值查找相同结点的其它属性值[C#]

2009-09-04 16:23 316 查看
实现功能:

用XML结点的属性值查找相同结点的其它属性值,即如下的xml,输入一个001,能得出FistTag_Value这个值来.

1)首先,把下面的xml文档存在D盘目录下,命名为:Test.xml,xml文档内容如下

//-------------------------------------xml文档分割线----------------------------------------------

<?xml version="1.0" encoding="utf-8"?>

<HeadData>

<Item>

<SystemType>0</SystemType>

<tag Entrytag="001" NodeName="FistTag_Value">

<FistNode>0001</FistNode>

<SecondNode>0001</SecondNode>

</tag>

</Item>

<Item>

<SystemType>0</SystemType>

<tag Entrytag="002" NodeName="SecondTag_Value">

<FistNode>0002</FistNode>

<SecondNode>0002</SecondNode>

</tag>

</Item>

<Item>

<SystemType>0</SystemType>

<tag Entrytag="003" NodeName="ThirdTag_Value">

<FistNode>0003</FistNode>

<SecondNode>0003</SecondNode>

</tag>

</Item>

</HeadData>

//-------------------------------------xml文档分割线----------------------------------------------

2)代码实现,注释都写得很清楚了,我就不细说了

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;
namespace GetXmlInnerNodeValue
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.GetXmlInnerNode();
//Console.ReadKey();
}
private void GetXmlInnerNode()
{
//定义XmlDocument对象Load xml文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"D:/Test.xml");
//取得总结点
XmlNode xmlNod = xmlDoc.SelectSingleNode(@"HeadData");
//string str = xmlNod["Item"].ChildNodes[1].Attributes[0].Value;
//取得其所有子结点
XmlNodeList xnl = xmlNod.ChildNodes;
//输入结点的两个属性
foreach (XmlNode xnf in xnl)
{
Console.WriteLine("所有Tag名及值为:" + xnf.ChildNodes[1].Attributes[0].Value+" : "+xnf.ChildNodes[1].Attributes[1].Value);
}
//下面为具体演示代码
Console.WriteLine("请输入您要查找的Tag名:");
string strInput=string.Empty;
do
{
strInput = Console.ReadLine();
bool bFind = false; //定义一个bool看是否找到相应Tag值
for (int i = 0; i < xnl.Count; i++)
{
if (xnl[i].ChildNodes[1].Attributes[0].Value.Equals(strInput.Trim()))//如果找到相应Tag值
{
Console.WriteLine("您查找的Tag的值为:" + xnl[i].ChildNodes[1].Attributes[1].Value);
bFind = true;
}
if (!bFind && i == xnl.Count-1) //如果没有找到
{
Console.WriteLine("没有找到相应的Tag,请重新输入:");
}
}
//输入e或E退出程序
} while (!strInput.Equals("E") && !strInput.Equals("e"));
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: