Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 19. listopad 2013, 14:45:45 Předmět: čtení XML ze sítě |
|
|
Dneska jsem napsal několik odpovědí na fóru, tak se taky na něco zeptám :-)
Po síti mi chodí XMLka. Mám nahozený thread, který čte data z TcpClienta. Ty ale samozřejmě můžou přijít po kouskách. Ale já potřebuju přečíst celý xml dokument, takže by se hodil nějaký blokující XMLReader, který by prostě počkal, až to z toho NetwokStreamu přečte všechno.
Kdybych to měl dělat ručně, tak musím bufferovat příchozí data a počítat špičatý závorky, nebo tak něco. Což může být docala nebezpečný (když třeba nevezmu v úvahu CDATA podobně).
Doufal jsem, že XmlDocument.Load(XmlTextReader(NetworkStream)) bude fungovat, ale nefunguje.
Nevíte někdo? _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
johnnash
Založen: 30. 07. 2007 Příspěvky: 80
|
|
Návrat nahoru |
|
|
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 19. listopad 2013, 22:03:27 Předmět: |
|
|
vsak .NET SAX snad primo v sobe v XmlReaderu - semo, zkus to XML precist pomoci XmlReader tridy primo (mozna tam budou i nejaky moznosti nastaveni) nez to cist do DOMu
stejne mas lepsi to cist pomoci readeru a reagovat primo, nez zbytecne nacist DOM a az nad nim resit co prislo - zejmena jestli se jedna o nejaky vetsi XML |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 20. listopad 2013, 09:54:42 Předmět: |
|
|
No, jedná se o kód, který jsem zdědil po svém předchůdci a jako jednu z mála částí jsem to nepřepsal (asi ke škodě věci). Čte se to jako string, ve kterým se jen hledají tagy, no humus. Takže ani DOM, ani Reader... :-). Šlo mi jen o to, jestli v .NET existuje nějaký XmlReader, validátor, nebo něco podobnýho, kterej by četl z NetworkStreamu a blokoval by, dokud to xml nebude celé. Řezňo, píšeš, že tam asi bude nějaký nastavení...to je to co sem právě hledal a nenašel! :-).
Včera mi poradil perry na icq, ať si počkám na ukončovací element (je vždy stejný). Udělal jsem to takhle jednoduše a bude to stačit. Chtěl sem být korektní, aby to fungovalo na všechny XML, takže mě takováhle věc ani nenapadla. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 20. listopad 2013, 12:07:18 Předmět: |
|
|
semo> Nevim, jaky presne mas problem s System.Xml.XmlReader, ale neni System.Xml.XmlReader.ReadSubtree, pripadne System.Xml.XmlReader.ReadOuterXml na top-level elementu presne to, co potrebujes? Nebo tam je nejaky problem s blokovanim? _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 20. listopad 2013, 12:14:15 Předmět: |
|
|
Mám dojem, že jsem to bez úspěchu zkoušel. Asi to prostě přestane číst, když stream nemá žádná data (teprve totiž přijdou ze sítě). No možná se pletu a nefungovalo to jen náhodou. Ale už to zkoušet nebudu.
Díky za reakce. _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
|