2013-04-02 130 views
1
<?xml version="1.0" encoding="utf-8" ?> 
    <Root> 
     <Fruits> 
      <Fruit>hahahaha</Fruit> 
     </Fruits> 
    </Root> 

如果我试试这个代码想,我怎样才能节点,我从XML

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

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

但我正在逐渐nullxn.Text

我只想得到水果的价值,就像这个例子中的“hahahah”。

编辑

现在我改变了我的XML。

+0

为什么会出现内部水果 – tariq

+0

水果有这样做的没有更好的办法,请告诉我 – Mathematics

回答

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); 
} 

打印相同

+0

对不起,我不能使用LINQ,我使用.net2.0 – Mathematics

+0

临提示:在其核心,每个LINQ查询只是foreach的一种简写方式(collectionOfThings中的东西){if(thing.Property == sometest){//做些事情}} –

+0

当然,您可以使用Linq。在这里检查它的Linq for .net 2.0 http://www.albahari.com/nutshell/linqbridge.aspx – isioutis

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++; 
} 
+0

检查您的变量名称。 –

+0

啊,我已经从作者的帖子,以前的版本复制它。 –