Saya hanya berharap properti yang diimplementasikan secara otomatis ini dihasilkan, seperti halnya untuk "Tempel JSON sebagai Kelas". Saat ini ini berarti hasil kode 6 kali lipat, yang jauh lebih sulit dibaca. Ini saja membuat saya mencari alat lain, sayangnya.
Nicholas Petersen
1
Apakah ini tertinggal dari VS 2013?
Roger
3
@ Roger Saya belum pernah menggunakan VS 2013, tapi saya pikir fitur ini harus ada di sana, pastikan proyek Anda menargetkan .NET 4.5 Framework
miszczu
2
Ini jauh lebih cepat daripada xsd, tetapi hasilnya hampir sama.
Jess
4
Jika Anda tidak memiliki regharper, gunakan regex, ganti dengan 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; }dan `private \ w + \ w + Field; \ r \ n \ r \ n`
AlexDev
44
Awalnya saya pikir Pasta Spesial adalah cawan suci! Tapi kemudian saya mencobanya dan rambut saya memutih seperti film Indiana Jones.
Output dari alat ini bagus, tapi saya hanya ingin membuat peringatan agar tidak mengirimkan data sensitif ke situs ini (atau yang lainnya dalam hal ini). Sementara saya menghargai layanan yang ditawarkan, tidak ada kebijakan privasi dan sedikit atau tidak ada jaminan bahwa apa yang Anda tempel tidak akan dicatat dan diperiksa, dll.
SvenAelterman
2
Saya punya file xml yang memiliki beberapa hubungan rekursif (mungkin itu disebut hubungan melingkar, saya tidak yakin.) Yang lain gagal tetapi xmltocsharp.azurewebsites.net sangat sukses pada xml itu.
Koray
4
@ D.Kermott terima kasih atas tautan situs webnya, saya sudah melihatnya dengan cepat dan sepertinya itu melakukan pekerjaan yang jauh lebih baik daripada tempel khusus, kodenya terlihat lebih bersih, meskipun pengujian saya xml menciptakan lebih banyak kelas, itu jauh lebih bagus untuk digunakan.
Harag
Sayang rasanya membalikkan urutan kelas (elemen luar terdaftar terakhir)
Savage
22
Saya menyadari bahwa ini adalah pos yang agak lama dan Anda mungkin telah pindah.
Tetapi saya memiliki masalah yang sama dengan Anda sehingga saya memutuskan untuk menulis program saya sendiri.
Masalah dengan rute "xml -> xsd -> kelas" bagi saya adalah bahwa itu hanya menghasilkan benjolan kode yang benar-benar tidak dapat dipelihara dan akhirnya saya turfing itu.
Ini sama sekali tidak elegan tetapi itu berhasil bagi saya.
Anda bisa mendapatkannya di sini: Silakan buat saran jika Anda suka.
menghasilkan kode yang salah: // ELEMENTS [XmlIgnore] public DateTime Value {get; set; } [XmlText] string publik ValueString {get {return Value? "benar salah"; } set {Value = value == "true"; }}
André Fiedler
Dan konstruktor tidak perlu + Anda harus memasukkan komentar untuk anggota yang dapat dilihat oleh publik
André Fiedler
1
Dalam pembelaan saya, itu adalah sesuatu yang saya pukul dengan sangat cepat yang bekerja untuk saya. Saya belum kembali ke sana tetapi merasa bebas untuk berkontribusi pada repo setiap perubahan.
Talon
Saya telah menggunakan ini selama beberapa bulan - ini tidak sempurna, tapi ini cukup berguna dan saya menemukan ini menghasilkan XML yang lebih mudah dibaca / lebih sederhana daripada pasta VS2013 sebagai XML. Talon sangat dihargai.
Baik xsd.exe dan svcutil beroperasi pada file skema XML (.xsd). XML Anda harus sesuai dengan file skema yang akan digunakan oleh salah satu dari kedua alat ini.
Perhatikan bahwa berbagai alat pihak ke-3 juga ada untuk ini.
Anda dapat menggunakan xsd seperti yang disarankan oleh Darin.
Selain itu, disarankan untuk mengedit file test.xsd untuk membuat skema yang lebih masuk akal.
type="xs:string"dapat diubah menjadi type="xs:int"untuk nilai integer minOccurs="0"dapat diubah ke minOccurs="1"tempat bidang diperlukan maxOccurs="unbounded"dapat diubahmaxOccurs="1" tempat hanya satu item diperbolehkan
Anda dapat membuat xsd-s lebih lanjut jika Anda ingin memvalidasi data Anda lebih lanjut, tetapi ini setidaknya akan memberi Anda tipe data yang masuk akal dalam c # yang dihasilkan.
Jawaban:
Ya, dengan menggunakan xsd.exe
Catatan
Jawab bagaimana mengubah direktori di Command Command Prompt ke d: \ temp semoga bermanfaat.
Jika Anda membuat kelas untuk array multi-dimensi, ada bug di generator XSD.exe, tetapi ada solusinya .
sumber
xsd
jalankan Perintah Pengembang untuk VS2013 di bawah menu alat Anda.xsd.exe
dapat ditemukan di bawah:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
ditemukan di:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
Jika Anda sedang mengerjakan proyek .NET 4.5 di VS 2012 (atau lebih baru), Anda bisa menempelkan file XML Anda sebagai kelas.
EDIT > Paste Special > Paste XML As Classes
sumber
xsd
, tetapi hasilnya hampir sama.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; }
dan `private \ w + \ w + Field; \ r \ n \ r \ n`Awalnya saya pikir Pasta Spesial adalah cawan suci! Tapi kemudian saya mencobanya dan rambut saya memutih seperti film Indiana Jones.
Tapi sekarang saya menggunakan http://xmltocsharp.azurewebsites.net/ dan sekarang saya semuda dulu.
Berikut adalah segmen dari apa yang dihasilkannya:
sumber
Saya menyadari bahwa ini adalah pos yang agak lama dan Anda mungkin telah pindah.
Tetapi saya memiliki masalah yang sama dengan Anda sehingga saya memutuskan untuk menulis program saya sendiri.
Masalah dengan rute "xml -> xsd -> kelas" bagi saya adalah bahwa itu hanya menghasilkan benjolan kode yang benar-benar tidak dapat dipelihara dan akhirnya saya turfing itu.
Ini sama sekali tidak elegan tetapi itu berhasil bagi saya.
Anda bisa mendapatkannya di sini: Silakan buat saran jika Anda suka.
SimpleXmlToCode
sumber
Anda harus mempertimbangkan svcutil ( pertanyaan svcutil )
Baik xsd.exe dan svcutil beroperasi pada file skema XML (.xsd). XML Anda harus sesuai dengan file skema yang akan digunakan oleh salah satu dari kedua alat ini.
Perhatikan bahwa berbagai alat pihak ke-3 juga ada untuk ini.
sumber
Anda dapat menggunakan xsd seperti yang disarankan oleh Darin.
Selain itu, disarankan untuk mengedit file test.xsd untuk membuat skema yang lebih masuk akal.
type="xs:string"
dapat diubah menjaditype="xs:int"
untuk nilai integerminOccurs="0"
dapat diubah keminOccurs="1"
tempat bidang diperlukanmaxOccurs="unbounded"
dapat diubahmaxOccurs="1"
tempat hanya satu item diperbolehkanAnda dapat membuat xsd-s lebih lanjut jika Anda ingin memvalidasi data Anda lebih lanjut, tetapi ini setidaknya akan memberi Anda tipe data yang masuk akal dalam c # yang dihasilkan.
sumber
Gunakan sintaksis di bawah ini untuk membuat kelas skema dari file XSD.
sumber
Untuk mengonversi XML menjadi Kelas C #:
Catatan: dalam waktu yang penuh, aplikasi ini dapat diganti, tetapi kemungkinan besar, akan ada alat lain yang melakukan hal yang sama.
sumber