Jaka klasa do tego pliku XML?

0
<list xmlns="http://www.gaduradio.pl/schema/gr-im-channel-list"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.gaduradio.pl/schema/gr-im-channel-list
 http://www.gaduradio.pl/schema/gr-im-channel-list.xsd">
    <default chname="2">
        <server ip="gr-lb-2.gaduradio.pl" port="80" authport="443"></server>
        <server ip="gr-lb-1.gaduradio.pl" port="80" authport="443"></server>
    </default>
    <channel description="Orange Music" chname="31">
        <server ip="gr-lb-2.gaduradio.pl" port="80" authport="443"></server>
        <server ip="gr-lb-1.gaduradio.pl" port="80" authport="443"></server>
    </channel>
        .
        .
        .
    <channel description="RADIO MUZANGO" chname="9">
        <server ip="gr-lb-2.gaduradio.pl" port="80" authport="443"></server>
        <server ip="gr-lb-1.gaduradio.pl" port="80" authport="443"></server>
    </channel>
    <version>2008070201</version>
</list>

Mam taki plik XML, ściagany z sieci. Chciałbym go zserializować, ale do tego potrzebuję klasy jednak nie za bardzo wiem, jak ma wyglądać klasa odpowiadająca temu plikowi. Jakie powinna zawierać pola?

public class List
{
  pole typu default chname="2"?
}

Dziękuję z góry za pomoc.

0

Witam,
możesz wygenerować klasy dynamicznie na podstawie pliku *.xsd
1)Ściągnij plik *.xsd: http://www.gaduradio.pl/schema/gr-im-channel-list.xsd.
1a)Zmień nazwę. Np: na ChannelList.xsd
2)Start->Programy->Microsoft Visual Studio 200x->Visual Studio Tools -> Visual Studio 200x Command Prompt
3)Znajdź plik ChannelList.xsd
4)Wykonaj polecenie: xsd ChannelList.xsd /CLASSES /language:cs

Powinien wygenerować się plik ChannelList.cs w którym znajdują się klasy wygenerowane automatycznie
na podstawie pliku *.xsd.

Dołącz wygenerowane klasy do projektu.
Znajdź odpowiednią klasę i możesz deserializować ;)

Pozdrawiam.

0

Wybacz, że na tak dogłębną odpowiedź dostajesz tak idiotyczne pytanie, ale czy występuje on także w wersji Express? Przegrzebałem cały katalog i nie mogę znaleźć.

0

Witam,

kanister napisał(a)

Wybacz, że na tak dogłębną odpowiedź dostajesz tak idiotyczne pytanie, ale czy występuje on także w wersji Express? Przegrzebałem cały katalog i nie mogę znaleźć.

Nie ma idiotycznych pytań ;)

Być może nie ma, nigdy nie korzystałem z Visual Express.
Stworzyłem Ci za pomocą tego narzędzia zestaw klas, które wystarczy dołączyć do projektu.
Możesz go ściągnąć z poniższej strony:
http://www.sendspace.pl/file/KHel8J8J

Przykład użycia:

Use.XMLDeserialize(@"plik.xml");

Aha, nie wiem dlaczego ale wyskakuje wyjątek przy deserializacji jeśli nie usuniesz atrybutów
z znacznika list.
Plik musi bwyglądać tak:
<list>
....
</list>

Pozdrawiam

0

Dziękuję serdecznie za pomoc.

0

Witam...jeśli mam klasę wygenerowaną przez xsd.exe to co w niej zmienić aby możliwe było generowanie jakby kilku plików xml w jednym (np dla dwóch zaznaczonych rekordów). Bo normalne że jak zaznaczam dwa rekordy i buduje xml-a to i tak pobiera tylko ostatni bo nadpisuje zmienne..A w klasie tej nie ma żadnych tablic...bardzo proszę o pomoc..

0

serializuj List<twojObiekt>

0

Serializuje tak:

using (XmlWriter writer = XmlWriter.Create(saveFileDialog1.FileName))
{
serializer.Serialize(writer, wykaz);
writer.Close();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(saveFileDialog1.FileName);
xmlDoc.Save(saveFileDialog1.FileName);
}
gdzie wykaz jest listą tak jak napisałeś do której dodaje załóżmy dwa obiekty. I jest błąd niewiem o co chodzi...("There was an error generating the XML document.") .Jak to serialozować? Masz jakiś przykład?
Załóżmy że mój obiekt wygląda tak:
<obiekt1>
<obiekt2>
</obiekt2>
</obiekt1>
teraz probuje stworzyc cos takiego i jest błąd:
<obiekt1>
<obiekt2>
</obiekt2>
</obiekt1>
<obiekt1>
<obiekt2>
</obiekt2>
</obiekt1>
docelowo mi chodzi o takiego xml-a:
<obiekt1>
<obiekt2>
</obiekt2>
<obiekt2>
</obiekt2>
</obiekt1>
Proszę o pomoc...

0

using (XmlWriter writer = XmlWriter.Create(saveFileDialog1.FileName))
{
serializer.Serialize(writer, wykaz);
writer.Close();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(saveFileDialog1.FileName);
xmlDoc.Save(saveFileDialog1.FileName);
}

hmm, a po co ten Load i Save ? juz zserializowales ten obiekt i zapisales do pliku

co do xml to zeby osiagnac taki wynik jak chcesz musisz miec klase obiekt1 w ktorej bedzie lista List<obiekt2> i serializowac trzeba klase obiekt1
majac klase obiekt1, ktora zawiera obiekt2 nie da sie tego osiagnac (nie mowie o jakims recznym generowaniu xml)

0

To Load i Save jest celowo napisane.<ort>Niewiem </ort>czemu jak tego nie było po 1. Nie pozbywał się znaków specjalnych & <> a po 2.Nie układał tego tak jak powinien wyglądać XML. <ort>Niewiem </ort>czemu...ale jak to dadałem jest ok.
Co do XML to bardzo bym cie prosił o pomoc bo nie bardzo wiem jak to zmienić w tej klasie. Musze <ort>po prostu </ort>obiekt 2 zamienic na liste czy jak? Mogę ci podesłać tą klasę lub wrzucić albo jej część żeby mi pokazać co zmienić...<ort>niewiem </ort>czy dobrze rozumiem...>>??

1 użytkowników online, w tym zalogowanych: 0, gości: 1