2015-06-18 55 views
0

我很努力地使用Linq獲取單個xml節點的值。使用Linq從數據庫獲取XML數據

這是我的XML。

 <?xml version="1.0" encoding="utf-8"?> 
     <record> 
     <AddressLine1>abcd street</AddressLine1> 
     <AddressLine2>xyz AVE</AddressLine2> 
     <AddressCity>Illinois</AddressCity> 
     <AddressState>Chicago</AddressState> 
     <AddressZip>23434</AddressZip> 
     </record> 

這裏是我的C#代碼

XElement xmlDoc = XElement.Parse(varQ.Content); 
     //When I debug I find that xmlDoc contains the XML. So that is alright. 

    var q = (from lpi in xmlDoc.Descendants("record") 
      select new { AddressLine1 = lpi.Element("AddressLine1").Value, 
      AddressLine2 = lpi.Element("AddressLine2").Value, 
      AddressCity = lpi.Element("AddressCity").Value, 
      AddressCountry = lpi.Element("AddressCountry").Value, 
      AddressState = lpi.Element("AddressState").Value, 
      AddressZip = lpi.Element("AddressZip").Value, 
      }).FirstOrDefault(); 

變種q顯示空。你能幫我找出這裏有什麼問題嗎?

回答

1

上DescendantsAndSelf替換後人:

string xml = @"<?xml version=""1.0"" encoding=""utf-8""?> 
     <record> 
     <AddressLine1>abcd street</AddressLine1> 
     <AddressLine2>xyz AVE</AddressLine2> 
     <AddressCity>Illinois</AddressCity> 
     <AddressState>Chicago</AddressState> 
     <AddressZip>23434</AddressZip> 
     </record>"; 

      XElement xmlDoc = XElement.Parse(xml); 
      var q = (from lpi in xmlDoc.DescendantsAndSelf("record") 
        select new 
        { 
         AddressLine1 = (string)lpi.Element("AddressLine1"), 
         AddressLine2 = (string)lpi.Element("AddressLine2"), 
         AddressCity = (string)lpi.Element("AddressCity"), 
         AddressCountry = (string)lpi.Element("AddressCountry"), 
         AddressState = (string)lpi.Element("AddressState"), 
         AddressZip = (string)lpi.Element("AddressZip"), 
        }).FirstOrDefault(); 
      Console.WriteLine(q); 

打印:

{ AddressLine1 = abcd street, AddressLine2 = xyz AVE, AddressCity = Illinois, AddressCountry = , AddressState = Chicago, AddressZip = 23434 } 

鏈接:https://dotnetfiddle.net/fXQivX

+0

我會盡力找回到u。感謝回覆。 :) –

+0

我得到一個空引用異常(System.Linq.Enumerable.WhereSelectEnumerableIterator'2.MoveNext() 在System.Linq.Enumerable.FirstOrDefault [TSource](IEnumerable'1源) –

+0

另一個錯誤:值不能爲空。 \ r \ n參數名稱:元素 –