2010-05-08 67 views
2

我具有类似于下面之一的XML结构的XML节点(单个)的值:如何读取使用LINQ到XML

   <test> 
       <test1>test1 value</test1> 
       </test> 

现在我读使用以下LINQ到XML代码的节点的值。

 var test = from t in doc.Descendants("test") select t.Element("test1").Value; 
     Console.WriteLine("print single node value"); 
     foreach (var item in test) 
     { 
      Console.WriteLine(item); 
     } 

上面的代码工作正常,但在这里我有一个节点,但以检索我使用foreach循环值,我不认为是做同样的事情,而不foreach循环的good..any更好的办法 谢谢。

回答

9

尝试这样:

using System; 
using System.Linq; 
using System.Xml.Linq; 

public class Example 
{ 
    static void Main() 
    { 
     String xml = @"<test> 
       <test1>test1 value</test1> 
         </test>"; 

     var test = XElement.Parse(xml) 
       .Descendants("test1") 
       .First() 
       .Value; 

     Console.WriteLine(test); 
    } 
} 
+0

这将/工作,但我从一个XML文件中读取值。 – Wondering 2010-05-08 13:04:29

+1

@Wondering - 然后你需要做的就是将'XElement.Parse(xml)'改为'XElement.Load(pathToYourFile)'。 – 2010-05-08 13:28:19

+0

好的,根据我的代码,我将它改为var res = doc.Descendants(“test1”)。First()。Value;它的工作。感谢您的帮助 – Wondering 2010-05-08 14:54:10

0

,你也可以尝试提供诸如下面的XML文件路径:

XElement xmldoc = XElement.Load("filePath"); 
     var nodeValueFromXMlFile = xmldoc 
      .Descendants("node name") 
      .First() 
      .Value; 
     System.Console.WriteLine(nodeValueFromXMlFile);