2010-04-02 35 views
1

我是xml新手,無法找到在標籤之間獲取內容的方法。 我的XML文件是使用.NET讀取XML文件

<?xml version="1.0" encoding="utf-8"?> 
<block1> 
    <file name="c:\w0.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name="c:\w1.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name="c:\w2.xml"> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
</block1> 
+1

請顯示您嘗試過的內容。 – 2010-04-02 05:26:23

回答

5

LINQ to XML是一個很好的開始。考慮下面的代碼來解析你的XML。

string xml = @"<?xml version=""1.0"" encoding=""utf-8""?> 
<block1> 
    <file name=""c:\w0.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name=""c:\w1.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
    <file name=""c:\w2.xml""> 
    <word>Text</word> 
    <number>67</number> 
    </file> 
</block1>"; 

XDocument document = XDocument.Parse(xml); 

var block = from file in document.Descendants("file") 
      select new 
      { 
       Name = file.Attribute ("name").Value, 
       Word = file.Element("word").Value, 
       Number = (int)file.Element("number") 
      }; 

foreach (var file in block) 
{ 
    Console.WriteLine("{0}\t{1}\t{2}", file.Name, file.Word, file.Number); 
} 

可以,當然也可以直接使用XDocument.Load而不是使用解析讀取XML字符串文件加載XML。 XDocument位於System.Xml.Linq命名空間中。坦率地說,我會從那裏開始,但在System.Xml命名空間(XmlReader.Create等)中還有其他選項可用於處理XML。

+1

@Anthony:不是'XmlTextReader'。 'XmlReader.Create'。 – 2010-04-02 05:19:11

+0

謝謝,約翰。去顯示我所知道的。自LINQ出現以來,我幾乎忘記了其他方法的一切!非常悲慘。 – 2010-04-02 05:20:19