SUPER_OkO Posted December 12, 2010 Share Posted December 12, 2010 Witam. Mam problem z odczytaniem danych, które to przechwytuję z serwera. Dane w tym momencie dostaję jako xml i za cholerę nie potrafię tego rozgryźć. Na początku łączę się z serwerem, który to mi wysyła dane: hejHo = dotNetObject "System.Net.Sockets.Socket" ( dotnetclass "System.Net.Sockets.AddressFamily" ).InterNetwork ( dotnetclass "System.Net.Sockets.SocketType" ).Stream ( dotnetclass "System.Net.Sockets.ProtocolType" ).Tcp hejHo.Connect "127.0.0.1" 3000 ascii_decoder = dotNetObject "System.Text.ASCIIEncoding" bytes = dotNetObject "System.Byte[]" 4096 result = hejHo.Receive bytes return_text = ascii_decoder.GetString(bytes) i w tym momnecie otrzymuję całą zawartość xml ale jako stringa. "..." Gdybym to zapisał sobie jako plik xml, to spokojnie potrafię odczytać dane. Ponieważ serwer wysyła dane na bierząco to chciałbym je odczytywać w locie. No i teraz pytanie nr 1. Jak to zapisać inaczej żebym na końcu wartość nie była wypluwana jako string tylko hmmm.. jako kod xml zapisany w pamięci. Tak żebym mógł sobie odczytać dane jakoś tak daneXML.ChildNodes.item[0].ChildNodes.itemof[2].Attributes.itemof[1].value No i pytanie2 Jak można przekonwertować takiego stringa XML do XML zapisując to w pamięci pomijając zapis do pliku. Nie bijcie mnie po oczach, bo dopiero raczkuje w temacie DNet'a. Dzieki z góry za wszelkie komentarze, wskazówki gdzie szukać itd. Link to comment Share on other sites More sharing options...
Polacco Posted December 12, 2010 Share Posted December 12, 2010 pytanie nr 1. Jak to zapisać inaczej żebym na końcu wartość nie była wypluwana jako string tylko hmmm.. jako kod xml zapisany w pamięci. Tak żebym mógł sobie odczytać dane jakoś tak daneXML.ChildNodes.item[0].ChildNodes.itemof[2].Attributes.itemof[1].value No i pytanie2 Jak można przekonwertować takiego stringa XML do XML zapisując to w pamięci pomijając zapis do pliku. Pytania są równoznaczne ;) Rozumiem, że "kod xml zapisany w pamięci" to obiekt .NET ułatwiający operacje na XML? Ostatnio jak musiałem parsować XML (jakieś 2 lata temu ;) ) to LINQ był na topie. Tu masz przykład jak zainicjować System.Xml.Linq.XDocument przy pomocy stringa: http://msdn.microsoft.com/en-us/library/bb299692.aspx Link to comment Share on other sites More sharing options...
SUPER_OkO Posted December 12, 2010 Author Share Posted December 12, 2010 Dzięki wielkie za odpowiedź, ogólnie dalej jeszcze nie rozumiem jak to zapisać w mxs ;). Ale już wiem przynajmniej "jak to powinno wyglądać" ;). Link to comment Share on other sites More sharing options...
SUPER_OkO Posted December 13, 2010 Author Share Posted December 13, 2010 Siedziałem wczoraj cały dzień i nic nie udało mi się uruchomić za pomocą linqa. Problem cały czas leżal w textReader'ze do którego nie mogłem wczytać cholernego stringa. Dzisiaj sprawdziłem jeszcze raz metody xmlDokumentu i sie okazało, że jest poprostu tam funkcja wczytująca ze stringa.. poprostu "loadxml".. wiec poki co wygląda ten kod tak: hejHo = dotNetObject "System.Net.Sockets.Socket" ( dotnetclass "System.Net.Sockets.AddressFamily" ).InterNetwork ( dotnetclass "System.Net.Sockets.SocketType" ).Stream ( dotnetclass "System.Net.Sockets.ProtocolType" ).Tcp hejHo.Connect "127.0.0.1" 3000 dotNet.loadAssembly "system.xml" xmlDoc=dotNetObject "system.xml.xmlDocument" ascii_decoder = dotNetObject "System.Text.ASCIIEncoding" bytes = dotNetObject "System.Byte[]" 4096 result = hejHo.Receive bytes return_text = ascii_decoder.GetString(bytes) xmlDoc.loadxml(return_text) docEle=xmlDoc.documentElement docEle.ChildNodes.count Wszystko działa bez problemu. Obszedłem "metodę" z linqu nie wiem czy dobrze czy źle i na ile to wszystko będzie działać szybko.. ale przynajmniej mogę iść dalej. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now