如何从XML获取我想要的节点

时间:2013-04-02 08:45:10

标签: c# xml xpath .net-2.0

<?xml version="1.0" encoding="utf-8" ?> 
  <Root>
       <Fruits>
            <Fruit>hahahaha</Fruit>
       </Fruits>
  </Root>

如果我试试这段代码,

  string[] cFruitName; int i=0;
  XmlDocument a= new XmlDocument();
  a.LoadXml(getXML());

  foreach (XmlNode xn in a)
  {
     cFruitName[i] = xn.Text;
     i++;
  }

但我null获得了xn.Text

我想要的只是获得水果的价值,比如&#34; haha​​hah&#34;在这个例子中。

修改

我现在改变了我的XML。

2 个答案:

答案 0 :(得分:5)

var xml = XDocument.Parse(getXML());

var fruits = xml.Descendants("fruit").Select(n => n.Value);

Console.WriteLine(string.Join(Environment.NewLine, fruits));

打印

hahahaha

将XPath用于 .net 2.0 版本

XmlDocument xml = new XmlDocument();
xml.LoadXml(getXML());

XmlNodeList fruits = xml.SelectNodes("//fruit");

foreach (XmlNode fruit in fruits)
{
    Console.WriteLine (fruit.InnerText);
}

打印相同的

答案 1 :(得分:1)

试试这个:

string[] cFruitName; int i=0;
XmlDocument a= new XmlDocument();
a.LoadXml(getXML());

foreach (XmlNode xn in a.Where(x=>x.Text != null))
{
   cFruitName[i] = xn.Text;
   i++;
}

string[] cFruitName; int i=0;
XmlDocument a= new XmlDocument();
a.LoadXml(getXML());

foreach (XmlNode xn in a.Where(x=>x.Name == "fruit"))
{
   cFruitName[i] = xn.Text;
   i++;
}