Czy mogę wygenerować klasę C # z pliku XML?
Czy mogę wygenerować klasę C # z pliku XML?
Odpowiedzi:
Tak, używając xsd.exe
D:\temp>xsd test.xml
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.xsd'.
D:\temp>xsd test.xsd /classes
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.cs'.
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 .
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
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ł:
namespace Xml2CSharp
{
[XmlRoot(ElementName="entry")]
public class Entry {
[XmlElement(ElementName="hybrisEntryID")]
public string HybrisEntryID { get; set; }
[XmlElement(ElementName="mapicsLineSequenceNumber")]
public string MapicsLineSequenceNumber { get; set; }
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.
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.
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ł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 #.
Użyj poniższej składni, aby utworzyć klasę schematu z pliku XSD.
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
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.