LINQ problem z wczytaniem XML

LINQ problem z wczytaniem XML
Miś Uszatek
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 11 lat
  • Postów:27
0

Witam
Mam różne parametry XML do wczytanie, które się nie powtarzają i w tym jest problem Linq nie może odnaleźć parametru w kodzie i wywala bład

Przykład kodu z netu
na który się opieram w mojej aplikacji

Kopiuj

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.Xml.Linq;
using System.IO;
using System.Diagnostics;
 
namespace WindowsPhoneApplication1
{
 public class StockQuote
 {
   public string Symbol { get; set; }
   public string Home { get; set; }
   public decimal Price { get; set; }
   public DateTime QuoteTime { get; set; }
 }
 
 public partial class MainPage : PhoneApplicationPage
 {
   // Constructor
   public MainPage()
   {
     InitializeComponent();
 
     // pretend this came from a web service
     string xmlData =
     @"<ServiceReply>
       <StockQuote symbol='IBM' price='32.50' quotetime='01/01/2010 12:21:00'/>
       <StockQuote symbol='MSFT' price='21.20' quotetime='01/01/2010 12:20:30' home='usa' />
      </ServiceReply>
     ";
 
   XDocument dataDoc = XDocument.Load(new StringReader(xmlData));
 
   var quotes = from quote in dataDoc.Descendants("StockQuote")
     let stamp = DateTime.Parse(quote.Attribute("quotetime").Value)
     orderby stamp ascending
     select new StockQuote
     {
       Symbol = quote.Attribute("symbol").Value,
       Price = decimal.Parse(quote.Attribute("price").Value),
       Home =  quote.Attribute("symbol").Value
     };
 
   foreach (StockQuote stockQuote in quotes)
   {
     TextBox.Text = Convert.ToString(stockQuote.Symbol + " : " + stockQuote.Price+ " : " + stockQuote.Home);
   }
 }
 }
}
  

ja zasysam xml z netu ale przykład podany jest bardzo podobny

Problem:
przerywa kompilację z powodu braku parametru Home w pierwszej linii kodu XML

Kopiuj
<StockQuote symbol='IBM' price='32.50' quotetime='01/01/2010 12:21:00'/>
 

ale muszę go pozyskać ponieważ występuje w drugiej linii kodu i jest mi on niezmiernie potrzebny, danych XML nie mogę zmienić

Kopiuj
<StockQuote symbol='MSFT' price='21.20' quotetime='01/01/2010 12:20:30' home="usa" />
 

co mogę zrobić aby LINQ pomijał brakujący argument

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 13 godzin
0
http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.attribute.aspx napisał(a)

XElement.Attribute Method
...
Return Value
Type: System.Xml.Linq.XAttribute
An XAttribute that has the specified XName; null if there is no attribute with the specified name.

Miś Uszatek
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 11 lat
  • Postów:27
0

Rev dzieki pomoglo
Azarien dzieki za MSDN

edytowany 1x, ostatnio: Miś Uszatek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.