Práce s XML v C# – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Práce s XML v C# – .NET – Fórum – Programujte.comPráce s XML v C# – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
plasmo0
Věrný člen
20. 11. 2009   #1
-
0
-

Ahoj,
potřebuji v programu načíst XML, ale jsem asi natvrdlej. Chápu jak načtu XML ve stylu:



<polozky>
<pozka></polozka>
</polozky>


Udělám to pomocí jednoduchého Xpath dotazu, ale mám xml ve stylu:


<?xml version="1.0" encoding="Windows-1250"?>
<rsp:responsePack version="1.0"......
<rsp:responsePackItem version="1.0" ....... state="ok">
<inv:invoiceResponse version="1.3" state="ok">
<rdc:producedDetails>
<rdc:id>....</rdc:id>
<rdc:number>....</rdc:number>
</rdc:producedDetails>
</inv:invoiceResponse>
</rsp:responsePackItem>
</rsp:responsePack>


Pokud bude u rsp:responsePackItem state=ok, pak potřebuju načíst obsah rdc:number, pokud bude state=errno pak budu potřebovat ještě načíst atribut note od rsp:responsePackItem.

Můžete mi prosím někdo vysvětlit jak bude vypadat xPath dotaz pro přístup k těmto prvkům? Děkuji

Nahlásit jako SPAM
IP: 147.32.22.–
Jak vzniká vynález? To všichni vědí, že je něco nemožné, a pak se objeví nějaký blázen, který neví, že je to nemožné, a udělá vynález. [br] Albert Einstein [br][br] http://plasmo.cz [br] http://bleskovaregistrace.cz [br] http://livetrading.cz
Reklama
Reklama
20. 11. 2009   #2
-
0
-

Já bych použil Linq to XML, je to trochu modernější přístup.

Nahlásit jako SPAM
IP: 81.92.146.–
Dušan Janošík | web: djanosik.cz, @djanosik
dannyk0
Věrný člen
20. 11. 2009   #3
-
0
-

Mas nekolik moznosti. Bud jak rika djanosik, tak pouzit Linq, ktery je hodne dobrou volbou. Dale pak xpath a pro nej se mrknu tu:



http://www.w3schools.com/XPath/xpath_syntax.asp

Pak muzes pouzit XmlDocument nebo XmlReader tridy. Rozdil mezi nima je ten, ze XmlDocument udrzuje cele xml v pameti, kdezto XmlReader ho proste jednou projede a smitec.
Vsechny podporuji vyber atributu, tak se mrkni na moznosti a uvidis, co ti sedne :)

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
plasmo0
Věrný člen
20. 11. 2009   #4
-
0
-

Tak se to pokuším spáchat pře LINQ, ale jednu věc furt nějak neberu.

Budu chtít aby to načetlo:

invoiceResponse 


Nebo:
rsp:invoiceResponse
?

Nahlásit jako SPAM
IP: 147.32.22.–
Jak vzniká vynález? To všichni vědí, že je něco nemožné, a pak se objeví nějaký blázen, který neví, že je to nemožné, a udělá vynález. [br] Albert Einstein [br][br] http://plasmo.cz [br] http://bleskovaregistrace.cz [br] http://livetrading.cz
20. 11. 2009   #5
-
0
-

Nejsem žádnej znalec XML, ale ten prefix říká, v jakým namespace ten element existuje (v tomto případě se zřejmě nejedná o výchozí namespace pro daný dokument). Tudíž úplný název elementu bude namespace + name.

Nahlásit jako SPAM
IP: 81.92.146.–
Dušan Janošík | web: djanosik.cz, @djanosik
plasmo0
Věrný člen
20. 11. 2009   #6
-
0
-

To djanosik : Ok, zkusím to.

Nahlásit jako SPAM
IP: 147.32.22.–
Jak vzniká vynález? To všichni vědí, že je něco nemožné, a pak se objeví nějaký blázen, který neví, že je to nemožné, a udělá vynález. [br] Albert Einstein [br][br] http://plasmo.cz [br] http://bleskovaregistrace.cz [br] http://livetrading.cz
plasmo0
Věrný člen
20. 11. 2009   #7
-
0
-

Díky za nakopnutí, už konečně chápu k čemu ty jmený prostory jsou :-)

Nahlásit jako SPAM
IP: 82.150.166.–
Jak vzniká vynález? To všichni vědí, že je něco nemožné, a pak se objeví nějaký blázen, který neví, že je to nemožné, a udělá vynález. [br] Albert Einstein [br][br] http://plasmo.cz [br] http://bleskovaregistrace.cz [br] http://livetrading.cz
mephi0
Expert
23. 11. 2009   #8
-
0
-

plasmo napsal:
Díky za nakopnutí, už konečně chápu k čemu ty jmený prostory jsou :-)


Ja ne :) nechcete to niekto vysvetlit ? Kedy ich mam puživať vo svojich xml, pretože ešte nikdy mi ich netrebalo.

Nahlásit jako SPAM
IP: 147.32.90.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
dannyk0
Věrný člen
24. 11. 2009   #9
-
0
-

K tomu samemu jako treba u .NET. Kazde XML muze byt definovano pomoci pravidel. A tim, ze zavedes namespace, tak muzes mit duplicitni jmena tagu, ale v jinych jmennych prostorech.



<req:data></req:data>

<resp:data></resp:data>

Jak vidis, tak oba dva tagy maji jmeno data. Ale nyni muzes treba validovat oba dva nejak jinak diky namespace.
Jak rikam, to same jako v .NET :)

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 40 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý