Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#] XML.Linq en het doorsturen van data

Pagina: 1
Acties:

  • Rhndy
  • Registratie: Februari 2010
  • Laatst online: 04-06 09:32
Goededag tweakers,

Ik ben bezig met een nieuw project en ik kom er nog niet helemaal uit.
Ik heb een XML-file(van een RSS-feed) die onder de root meerdere children heeft met dezelfde naam.
In VS krijg ik met een breakpoint de data uit deeerste child te zien. Maar bij deploy op het device (WP8) krijg ik data onder de laatste child te zien.
XML-file heeft de volgende structuur:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<root>
<item>
<title>titel 1</title>
<description>omschrijving 1</description>
</item>
<item>
<title>titel 2</title>
<description>omschrijving 2</description>
</item>
<item>
<title>titel 2</title>
<description>omschrijving 2</description>
</item>
</root>

Ik heb de originele file even niet hier (zit op m'n werk)
Via Linq parse ik dit document.
De code die ik nu gebruik is :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None);

                var xmldata = from r in xdoc.Descendants("item")
                              select new
                              {
                                  Title = r.Element("title").Value,
                                  Description = r.Element("description").Value,
                              };
                foreach (var r in xmldata)
                {

                    // Title                    
                    string title = r.Title.StripHTML().ToUpper();


Ik krijg dus de Title uit het onderste element te zien ipv het bovenste.
Hoe kan ik het voor elkaar krijgen om altijd het bovenste element binnen te krijgen?

Ik hoop dat ik m'n vraag een beetje goed geformuleerd heb.

Tweede vraag:
In dit project werk ik met meerdere RSS-feeds (en dus XML-files).

Ik wil vanuit Mainpage.xaml.cs de data uit het description element doorsturen naar een andere pagina. Ik heb al een event die ervoor zorgt dat bij het tappen op de title textbox, navigationservice.navigate uitgevoerd wordt waardoor ik dus op DetailPage.xaml uitkom. Ik wil echter dat bij het tap-event de data van die XML doorgestuurd wordt naar de detailpagina. Ik weet dat dit mogelijk is, maar ik weet dus niet hoe en ook geen idee waar ik via de zoekmachines naar moet zoeken..
Ik heb dus een volgende opbouw:
MainPage.xaml -> bevat 5 'feeds' met een textblock voor title. Met het tapevent op de title kom je op:
Detailpage.xaml -> deze moet dan de description bevatten van de title die is aangeklikt.

Kunnen jullie mij verder helpen?

Alvast bedankt :)

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Voor de eerste vraag: xmldata stelt een lijstje van geparseerde 'item's voor. Daarvan kun je het eerste (FirstOrDefault) of meerdere items tegelijk (Take) pakken. Als voorbeeld ziet het er dan als volgt uit:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
var firstItem = xmldata.FirstOrDefault();
    
if(firstItem != null)
    string title = firstItem.Title.StripHTML().ToUpper(); // etc
    
// of

int count = 3;
var items = xmldata.Take(count);

foreach(var item in items)
{ } // doe je ding

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-11 13:46

Janoz

Moderator Devschuur®

!litemod

Rhndy schreef op maandag 01 juli 2013 @ 09:44:
....In VS krijg ik met een breakpoint de data uit deeerste child te zien. Maar bij deploy op het device (WP8) krijg ik data onder de laatste child te zien.......
En wanneer je na het breakpoint verder gaat, zul je de regel waarschijnlijk nog 2 keer raken. Het is dus niet heel vreemd dat je uiteindelijk de laatste te zien krijgt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Rhndy
  • Registratie: Februari 2010
  • Laatst online: 04-06 09:32
Feanathiel schreef op maandag 01 juli 2013 @ 09:53:
Voor de eerste vraag: xmldata stelt een lijstje van geparseerde 'item's voor. Daarvan kun je het eerste (FirstOrDefault) of meerdere items tegelijk (Take) pakken. Als voorbeeld ziet het er dan als volgt uit:

C#:
1
2
3
4
5
var firstItem = xmldata.FirstOrDefault();
    
if(firstItem != null)
    string title = firstItem.Title.StripHTML().ToUpper(); // etc
    
Deze werkt precies zoals ik wil. Hartstikke bedankt voor je hulp!