Napisano 12 Grudzień 201014 l 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.
Napisano 12 Grudzień 201014 l 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
Napisano 12 Grudzień 201014 l Autor 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ć" ;).
Napisano 13 Grudzień 201014 l Autor 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.
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto