xml里根据属性节点里的文本节点,进入不同的属性节点


如xml文档结构

   
  < Test>
  
< Test1 name="one" value="A" >
<Detail>
<DetailCase name="name1" id="1" />
</Detail>
< /Test1>
< Test1 name="two" value="B">
<Detail>
<DetailCase name="name2" id="2" />
</Detail>

< /Test1>
< /Test>

怎么通过属性节点Test里文本节点value的值,进入不同的节点,比如在一个方法里传入A,就进入A属性节点里,传入B就进入B属性节点?

我现在已经写的差不多了,就卡在获取文本节点的时候,不能第二次获取。foreach

   
  XmlDocument xmlDoc = GetPath();
  
//获取所有元素节点
XmlNodeList topM = xmlDoc.DocumentElement.ChildNodes;
if (topM.Count == 0)
{
return null;
}
else
{
foreach (var item in topM)
{
XmlElement x=item as XmlElement;
//获取verifyMethod文本节点
string verifyMethod = x.Attributes["value"].Value;
if (verifyMethod == tag)
{ //... }
}
}

string verifyMethod = x.Attributes["value"].Value; 这里第二次遍历的时候会报错,错误消息是:未将对象引用到对像的实例。

//编辑器能不能再整整啊,空格排版比较麻烦、繁琐。

xml c#

shitoe 12 years, 4 months ago

System.Xml.XmlNodeList EnergyItemHourList = xml.SelectNodes("Test/Test1[@value='A']");

这个就行了吧……
这个是XPath的方法

var saveList = xml.SelectNodes("Test/Test1[@value='A... ;

注意要using System.Linq;

没有Linq的话

   
  System.Xml.XmlNodeList EnergyItemHourList = xml.SelectNodes("Test/Test1[@value='A']");
  
List<XmlNode> nodes;
foreach(XmlNode node in EnergyItemHourList)
{
nodes.Add(node);
}
XmlNode[] nodeArray = nodes.ToArray();

不是受的受兔 answered 12 years, 4 months ago

Your Answer