Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# pomoc oko XMLa

[es] :: .NET :: C# pomoc oko XMLa

[ Pregleda: 2157 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bozicg
Gojko Bozic
System Administrator
Pancevo

Član broj: 316286
Poruke: 14
*.unilib.bg.ac.rs.



Profil

icon C# pomoc oko XMLa27.12.2013. u 11:22 - pre 124 meseci
Situacija je sledeca. XML koji parsiram ima vise istih cvorova. Nekada ima 2 cvora, nekada 3 itd.
Nacin na koji preuzimam podatke je sledeci:
F
Code:
var items = (from r in xmlDoc.Descendants("record")
                        select new
                        {
                            Title = r.Element("metadata").Element("title").Value,
                            Creator = r.Element("metadata").Element("creator").Value,
                            Subject = r.Element("metadata").Element("subject").Value,
                            Contributor = r.Element("metadata").Element("contributor").Value,
                            Description = r.Element("metadata").Element("description").Value,
                            Abstract_theses = r.Element("metadata").Element("description").ElementsAfterSelf("description").First().Value,
                            Univerzitet = r.Element("metadata").Element("publisher").Value,
                    //        Fakultet = r.Element("metadata").Element("publisher").ElementsAfterSelf("publisher").First().Value,
//                        Fakultet1= r.Element("metadata").Element("publisher").ElementsAfterSelf("publisher").ElementAt(1).Value,
                         Fakultet2= r.Element("metadata").Element("publisher").ElementsAfterSelf("publisher").ElementAt(2).Value, //Za ovaj izbacuje gresku ako ne postoji
                            fakulteti = r.Element("metadata").Element("publisher").ElementsAfterSelf("publisher").Select(f => f.Value).ToArray(), //Ovo sam pokusao po savetu sa bencha, ali ne pomaze
                            Type = r.Element("metadata").Element("type").Value,
                            Format = r.Element("metadata").Element("format").Value,
                            Identefier = r.Element("metadata").Element("identifier").Value,
                            Language = r.Element("metadata").Element("language").Value,
                            Rights = r.Element("metadata").Element("rights").Value,

                        });



E problem je kada ne postoji treci cvor, izbacuje: Additional information: Specified argument was out of the range of valid values.
Znam sta znaci, pokusao sam na vise nacina i saveta sa stackowerflowa da ignorisem nepostojece cvorove ili da im upisem praznu vrednost, ali nista ne uspeva.
 
Odgovor na temu

manda
vladimir mandaric
Beograd

Član broj: 13840
Poruke: 29
217.24.20.*



Profil

icon Re: C# pomoc oko XMLa28.04.2014. u 10:05 - pre 120 meseci
Bilo bi dobro da daš primer XMLa ...

Da li si probao sa

Code:
Fakulteti = r.Element("metadata").Elements("publisher").ToArray()



?
manda
 
Odgovor na temu

tuolarips
Novi Sad

Član broj: 319492
Poruke: 74



+64 Profil

icon Re: C# pomoc oko XMLa01.05.2014. u 10:11 - pre 120 meseci
Taj kod koji si napisao je dosta neefikasan. Ovo r.Element("metadata") potencijalno može biti veoma zahtevna operacija (u zavisnosti od veličine XML-a), a ti je bespotrebno obavljaš za svaki property iznova. No, to je sad nebitno za tvoje pitanje, ali eto, čisto da ti ukažem na to. :)

Dalje, da li zaista postoji potreba za tim da ti ručno parsiraš XML? Mnogo elegantnije rešenje je upotreba .NET-ovog XMLSerializer-a. Naime, svoj objektni model treba da dekorišeš odgovarajućim atributima, a potom jednim pozivom metoda Deserialize dobijaš popunjenu instancu modela. Ako pak moraš ručno da parsiraš XML (jedan od razloga za to može biti da ti je to neki zadatak za fakultet), onda je najbolje da daš XML nad kojim tvoj kod puca (kao što reče manda).

[Ovu poruku je menjao tuolarips dana 01.05.2014. u 11:25 GMT+1]
"Time is a drug. Too much of it kills you." Terry Pratchett
 
Odgovor na temu

[es] :: .NET :: C# pomoc oko XMLa

[ Pregleda: 2157 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.