Bir XML dosyasından bir C # sınıfı oluşturabilir miyim?
Bir XML dosyasından bir C # sınıfı oluşturabilir miyim?
Yanıtlar:
Evet, xsd.exe'yi kullanarak
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'.
notlar
Cevap nasıl değişiklik dizinine Geliştirici Komutanlığı'nda İstemi d: \ temp yararlı olabilir.
Çok boyutlu dizi için sınıflar oluşturursanız, XSD.exe üreticisinde bir hata vardır , ancak geçici çözümler vardır .
xsd
için Geliştirici Komut İstemi'ni çalıştırın .
xsd.exe
altında bulabilirsiniz:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
için bulundu: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
VS 2012'de (veya daha yenisi) .NET 4.5 projesi üzerinde çalışıyorsanız, Özel XML dosyanızı sınıflar olarak yapıştırabilirsiniz .
EDIT > Paste Special > Paste XML As Classes
xsd
, ancak çıktı hemen hemen aynıdır.
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; }
ve `private \ w + \ w + Field ile değiştirin; \ r \ n \ r \
İlk başta Özel Yapıştır'ın kutsal kâse olduğunu düşündüm! Ama sonra denedim ve saçlarım Indiana Jones filmi gibi beyaza döndü.
Ama şimdi http://xmltocsharp.azurewebsites.net/ kullanıyorum ve şimdi her zamanki kadar gençim .
İşte ürettiklerinin bir bölümü:
namespace Xml2CSharp
{
[XmlRoot(ElementName="entry")]
public class Entry {
[XmlElement(ElementName="hybrisEntryID")]
public string HybrisEntryID { get; set; }
[XmlElement(ElementName="mapicsLineSequenceNumber")]
public string MapicsLineSequenceNumber { get; set; }
Bunun oldukça eski bir yazı olduğunu ve muhtemelen ilerlediğinin farkındayım.
Ama seninle aynı problemi yaşadım ve kendi programımı yazmaya karar verdim.
Benim için "xml -> xsd -> sınıfları" yolu ile sorun sadece tamamen sürdürülemeyen bir kod yığını oluşturdu ve ben onu çim bitmiş oldu.
Hiçbir şekilde zarif değil ama benim için işi yaptı.
Buradan alabilirsiniz: İsterseniz lütfen önerilerde bulunun.
Svcutil'i ( svcutil sorusu ) düşünmelisiniz
Hem xsd.exe hem de svcutil, XML şema dosyasında (.xsd) çalışır. XML'iniz bu iki araçtan biri tarafından kullanılacak bir şema dosyasına uymalıdır.
Bunun için çeşitli 3. taraf araçlarının da bulunduğunu unutmayın.
Darin tarafından önerilen şekilde xsd kullanabilirsiniz.
Buna ek olarak, daha makul bir şema oluşturmak için test.xsd dosyasını düzenlemeniz önerilir.
type="xs:string"
değiştirilebilir type="xs:int"
tamsayı değerler için
minOccurs="0"
değiştirilebilir minOccurs="1"
alanı gerekiyor nerede
maxOccurs="unbounded"
değiştirilebilir maxOccurs="1"
yalnızca bir öğe izin verilecek yerleri
Verilerinizi daha da doğrulamak istiyorsanız daha gelişmiş xsd-s oluşturabilirsiniz, ancak bu en azından oluşturulan c # 'da makul veri türleri verecektir.
XSD dosyasından şema sınıfı oluşturmak için aşağıdaki sözdizimini kullanın.
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
XML'i bir C # Sınıfına dönüştürmek için:
Not: zamanın dolgunluğunda, bu uygulama değiştirilebilir, ancak şansınız aynı şeyi yapan başka bir araç olacaktır.