2016-05-19 84 views
0

請考慮以下XML.I只想從特定的父節點讀取特定的子節點值。使用asp.net從XML中讀取具有相同名稱的子節點c#

**<response> 
    <Statuses> 
     <Detail> 
      <number>123</number> 
     </Detail> 
     <ToDate> 
      <date>1/1/2000</date> 
     </ToDate> 
     <FromDate> 
      <date>1/1/2000</date> 
     </FromDate> 
    </Statuses> 
</response>** 

我想從「FROM日期」標籤,並從細節標籤的讀取數量的日期值。

我試過,

If(reader.name.Equals("Statuses"StringComparison.CurrentCultureIgnoreCase) 
{ 
dateValue=reader.GetAttribute("/FromDate/Date"); 
} 

這是行不通的。請建議。

+5

那麼你不是想讀的屬性,你想讀的元素 - 這不是你如何使用'XmlReader'。我強烈建議你使用LINQ to XML - 將XML讀入一個'XDocument',然後你可以使用var date = doc.Root.Element(「Statuses」)。Element(「FromDate」)。Element 「date」);' –

回答

1

我喬恩斯基特同意你應該使用LINQ到XML這些類型tasks.It都會讓您的生活更輕鬆:

Sameple XML文件:

<response> 
    <Statuses> 
    <Detail> 
     <number>123</number> 
    </Detail> 
    <ToDate> 
     <date>1/1/2000</date> 
    </ToDate> 
    <FromDate> 
     <date>1/1/2000</date> 
    </FromDate> 
    </Statuses> 
    <Statuses> 
    <Detail> 
     <number>1234</number> 
    </Detail> 
    <ToDate> 
     <date>1/1/2000</date> 
    </ToDate> 
    <FromDate> 
     <date>1/1/2001</date> 
    </FromDate> 
    </Statuses> 
</response> 

代碼:

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

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //If the xml file is in the solution - set Build Action of the file to "Embedded Resource" 
      //and Copy to Output Directory to "Copy always" 
      var doc = XDocument.Load("input.xml"); 

      doc.Element("response").Elements().ToList().ForEach(e => 
       { 
        string number = e.Element("Detail").Element("number").Value; 
        string date = e.Element("FromDate").Element("date").Value; 

        Console.WriteLine("Number - {0}.Date - {1}\n", number, date); 
       }); 

      Console.ReadKey(); 
     } 
    } 
} 

輸出:

Output in Visual Studio

+0

優秀的答案男人,這正是我正在尋找的。 – Sizons

+0

當我「ToList」上面,我確實得到價值觀。當我對它「ForEach」時,它會拋出一個「未設置對象實例的對象引用」異常。我試圖在分配它之前檢查值是否爲空。不工作。 – Learner

+0

1)完全按照我的答案複製輸入文件2)完全按照我的答案複製代碼。 –

相關問題