Chciałbym tylko wygenerować automatycznie zaimplementowane właściwości, tak jak w przypadku „Wklej JSON jako klasy”. Obecnie oznacza to wynik 6-krotnego rozdętego kodu, który jest znacznie trudniejszy do odczytania. Samo to niestety sprawia, że szukam innego narzędzia.
Nicholas Petersen
1
Czy zostało to wykluczone z VS 2013?
Roger,
3
@Roger Nie korzystałem z VS 2013, ale myślę, że ta funkcja powinna tam być, upewnij się, że twój projekt jest skierowany do .NET 4.5 Framework
miszczu
2
Jest to znacznie szybsze niż xsd, ale wynik jest mniej więcej taki sam.
Jess
4
Jeśli nie masz resharper, użyj wyrażenia regularnego zamień na public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n=> public $1 $2 { get; set; }i `private \ w + \ w + Field; \ r \ n \ r \ n`
AlexDev
44
Na początku myślałem, że Specjalna Pasta była świętym Graalem! Ale potem spróbowałem, a moje włosy zrobiły się białe, jak w filmie Indiana Jones.
Dane wyjściowe tego narzędzia są dobre, ale chcę tylko rzucić ostrzeżenie, aby nie przesyłać żadnych wrażliwych danych na tę stronę (lub inne w tym zakresie). Doceniam oferowaną usługę, ale nie ma polityki prywatności i nie ma pewności, że to, co wkleisz, nie zostanie zarejestrowane i sprawdzone itp.
SvenAelterman
2
Miałem plik xml, który ma pewne rekurencyjne relacje (być może nazywa się to relacją cykliczną, nie jestem pewien.) Inne zawiodły, ale xmltocsharp.azurewebsites.net odniosło duży sukces na tym xml.
Koray
4
@ D.Kermott dzięki za link do strony, rzuciłem na nią okiem i wygląda na to, że wykonuje znacznie lepszą pracę niż specjalne wklejanie, kod wygląda na czystszy, chociaż mój testowy xml stworzył więcej klas, to było dużo ładniejszy w użyciu.
Harag
Szkoda, że odwraca kolejność zajęć (elementy zewnętrzne wymienione na końcu jako ostatnie)
Savage
22
Zdaję sobie sprawę, że jest to dość stary post i prawdopodobnie przeprowadziłeś się dalej.
Ale miałem taki sam problem jak ty, więc postanowiłem napisać własny program.
Problem z trasą „xml -> xsd -> klas” polegał na tym, że wygenerowałem kawałek kodu, który był całkowicie nie do utrzymania i ostatecznie go sfotografowałem.
Nie jest w żaden sposób elegancki, ale wykonał dla mnie pracę.
Możesz go pobrać tutaj: Jeśli podoba Ci się, proszę o sugestie.
produkuje zły kod: // ELEMENTS [XmlIgnore] public DateTime Value {get; zestaw; } [XmlText] public string ValueString {get {return Value? "prawda fałsz"; } ustaw {Wartość = wartość == „prawda”; }}
André Fiedler
Konstruktorzy są niepotrzebni + należy dołączyć komentarze do publicznie widocznych członków
André Fiedler
1
W mojej obronie było to coś, co bardzo szybko spoliczkowałem, co zadziałało. Nie wróciłem do tego, ale mogę wnieść wkład w repozytorium wszelkich zmian.
Talon
Używam tego od kilku miesięcy - nie jest idealny, ale jest całkiem przydatny i uważam, że generuje znacznie bardziej czytelny / prostszy XML niż wklej VS2013 jako XML. Bardzo ceniony Talon.
Zarówno xsd.exe, jak i svcutil działają na pliku schematu XML (.xsd). Kod XML musi być zgodny z plikiem schematu, aby mógł być używany przez jedno z tych dwóch narzędzi.
Zauważ, że istnieją do tego różne narzędzia innych firm.
Oprócz tego zaleca się edycję pliku test.xsd w celu stworzenia bardziej rozsądnego schematu.
type="xs:string"można zmienić type="xs:int"na wartości całkowite minOccurs="0"można zmienić minOccurs="1"tam, gdzie wymagane jest pole, maxOccurs="unbounded"można zmienić maxOccurs="1"tam, gdzie dozwolony jest tylko jeden element
Możesz utworzyć bardziej zaawansowane xsd-s, jeśli chcesz dalej sprawdzać poprawność swoich danych, ale da to przynajmniej rozsądne typy danych w wygenerowanym c #.
Odpowiedzi:
Tak, używając xsd.exe
Notatki
Odpowiedź , jak zmiany w katalogu Developer wiersza polecenia do d: \ temp może być przydatna.
Jeśli generujesz klasy dla tablicy wielowymiarowej, w generatorze XSD.exe występuje błąd, ale istnieją obejścia .
źródło
xsd
uruchom Wiersz polecenia programisty dla VS2013 w menu narzędzi.xsd.exe
można znaleźć pod:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
znaleziono:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
Jeśli pracujesz nad projektem .NET 4.5 w VS 2012 (lub nowszym), możesz po prostu wkleić plik XML jako klasy.
EDIT > Paste Special > Paste XML As Classes
źródło
xsd
, ale wynik jest mniej więcej taki sam.public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n
=>public $1 $2 { get; set; }
i `private \ w + \ w + Field; \ r \ n \ r \ n`Na początku myślałem, że Specjalna Pasta była świętym Graalem! Ale potem spróbowałem, a moje włosy zrobiły się białe, jak w filmie Indiana Jones.
Ale teraz używam http://xmltocsharp.azurewebsites.net/ i teraz jestem tak młody jak zawsze.
Oto segment tego, co wygenerował:
źródło
Zdaję sobie sprawę, że jest to dość stary post i prawdopodobnie przeprowadziłeś się dalej.
Ale miałem taki sam problem jak ty, więc postanowiłem napisać własny program.
Problem z trasą „xml -> xsd -> klas” polegał na tym, że wygenerowałem kawałek kodu, który był całkowicie nie do utrzymania i ostatecznie go sfotografowałem.
Nie jest w żaden sposób elegancki, ale wykonał dla mnie pracę.
Możesz go pobrać tutaj: Jeśli podoba Ci się, proszę o sugestie.
SimpleXmlToCode
źródło
Powinieneś rozważyć svcutil ( pytanie svcutil )
Zarówno xsd.exe, jak i svcutil działają na pliku schematu XML (.xsd). Kod XML musi być zgodny z plikiem schematu, aby mógł być używany przez jedno z tych dwóch narzędzi.
Zauważ, że istnieją do tego różne narzędzia innych firm.
źródło
Możesz użyć xsd zgodnie z sugestią Darina.
Oprócz tego zaleca się edycję pliku test.xsd w celu stworzenia bardziej rozsądnego schematu.
type="xs:string"
można zmienićtype="xs:int"
na wartości całkowiteminOccurs="0"
można zmienićminOccurs="1"
tam, gdzie wymagane jest pole,maxOccurs="unbounded"
można zmienićmaxOccurs="1"
tam, gdzie dozwolony jest tylko jeden elementMożesz utworzyć bardziej zaawansowane xsd-s, jeśli chcesz dalej sprawdzać poprawność swoich danych, ale da to przynajmniej rozsądne typy danych w wygenerowanym c #.
źródło
Użyj poniższej składni, aby utworzyć klasę schematu z pliku XSD.
źródło
Aby przekonwertować XML na klasę C #:
Uwaga: w miarę upływu czasu ta aplikacja może zostać zastąpiona, ale są szanse, że będzie inne narzędzie, które robi to samo.
źródło