XML से C # क्लास जेनरेट करें


जवाबों:


338

हाँ, 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'.

टिप्पणियाँ

डेवलपर कमांड प्रॉम्प्ट में निर्देशिका बदलने का उत्तर d: \ temp के लिए उपयोगी हो सकता है।

यदि आप बहु-आयामी सरणी के लिए कक्षाएं उत्पन्न करते हैं, तो XSD.exe जनरेटर में एक बग है, लेकिन वर्कअराउंड हैं


18
अपने उपकरण मेनू के तहत VS2013 के लिए डेवलपर कमांड प्रॉम्प्टxsd चलाने के लिए उपयोग करें ।
जेस

13
xsd.exeके तहत पाया जा सकता है:C:\Program Files (x86)\Microsoft SDKs\Windows
जूलियन

7
चेतावनी दी जाती है कि यदि आपके पास एक बड़ी जटिल XML फ़ाइल है तो उत्पन्न कक्षा इतनी बदसूरत होगी कि वह लगभग अनुपयोगी हो जाएगी;)
मैथ्यू लॉक

3
मेरे लिए xsd.exeइसमें पाया गया: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
user1991179

413

यदि आप वीएस 2012 (या नए) में .NET 4.5 परियोजना पर काम कर रहे हैं, तो आप अपनी XML फ़ाइल को कक्षाओं के रूप में विशेष पेस्ट कर सकते हैं।

  1. अपने XML फ़ाइल की सामग्री को क्लिपबोर्ड पर कॉपी करें
  2. संपादक में, वह स्थान चुनें जहाँ आप अपनी कक्षाओं को चिपकाया जाना चाहते हैं
  3. मेनू से, का चयन करें EDIT > Paste Special > Paste XML As Classes

22
मैं बस इस उत्पन्न ऑटो-कार्यान्वित गुणों की कामना करता हूं, जैसे कि यह "कक्षाओं के रूप में पेस्टन" के लिए करता है। वर्तमान में इसका अर्थ है 6 गुना फूला हुआ कोड परिणाम, जिसे पढ़ना बहुत कठिन है। यह अकेले मुझे एक और उपकरण की तलाश करता है, दुर्भाग्य से।
निकोलस पीटरसन

1
क्या यह वीएस 2013 से बचा था?
रोजर

3
@Roger मैंने VS 2013 का उपयोग नहीं किया है, लेकिन मुझे लगता है कि यह सुविधा होनी चाहिए, सुनिश्चित करें कि आपकी परियोजना .NET 4.5 फ्रेमवर्क को लक्षित कर रही है
miszczu

2
की तुलना में यह बहुत तेज है xsd, लेकिन आउटपुट उसी के बारे में है।
जेस

4
यदि आपके पास पुनर्जीवन उपयोग नहीं है, तो regex को 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; }और `निजी \ w + \ w + फ़ील्ड; \ r \ n \ r \ n` के साथ बदलें
एलेक्सडेव

44

पहले मुझे लगा कि पेस्ट स्पेशल पवित्र कब्र थी! लेकिन फिर मैंने इसकी कोशिश की और मेरे बाल इंडियाना जोन्स फिल्म की तरह सफेद हो गए।

लेकिन अब मैं http://xmltocsharp.azurewebsites.net/ का उपयोग करता हूं और अब मैं हमेशा की तरह युवा हूं।

यहां इसका एक सेगमेंट है जो इसे उत्पन्न करता है:

namespace Xml2CSharp
{
    [XmlRoot(ElementName="entry")]
    public class Entry {
        [XmlElement(ElementName="hybrisEntryID")]
        public string HybrisEntryID { get; set; }
        [XmlElement(ElementName="mapicsLineSequenceNumber")]
        public string MapicsLineSequenceNumber { get; set; }

5
इस टूल का आउटपुट अच्छा है, लेकिन मैं सिर्फ सावधानी के एक शब्द को बाहर फेंकना चाहता हूं ताकि इस साइट (या उस मामले के लिए कोई अन्य) के लिए कोई संवेदनशील डेटा जमा न करें। जब मैं उस सेवा की सराहना करता हूं, जो कोई गोपनीयता नीति नहीं है और कोई आश्वासन नहीं है कि आप जो पेस्ट करते हैं वह लॉग इन और जांच नहीं की जाएगी, आदि
स्वेलेल्टरमैन

2
मेरे पास एक xml फ़ाइल थी जिसमें कुछ पुनरावर्ती संबंध हैं (शायद इसे परिपत्र संबंध कहा जाता है, मुझे यकीन नहीं है।) अन्य असफल रहे लेकिन xmltocsharp.azurewebooks.net उस xml पर बहुत सफल रहा।
कोरे

4
@ D.Kermott वेबसाइट लिंक के लिए धन्यवाद, मुझे इस पर एक त्वरित नज़र पड़ी है और ऐसा लगता है कि यह पेस्ट विशेष की तुलना में बहुत बेहतर काम करता है, कोड साफ दिखता है, हालांकि मेरे परीक्षण xml ने अधिक कक्षाएं बनाईं, यह बहुत अधिक था उपयोग करने के लिए अच्छा है।
हरग

दया आती है कि यह कक्षाओं के क्रम को उल्टा करता है (पिछले सूचीबद्ध तत्वों के बाहर)
सैवेज

22

मुझे एहसास है कि यह एक पुरानी पोस्ट है और आप शायद आगे बढ़ चुके हैं।

लेकिन मुझे भी आपकी यही समस्या थी इसलिए मैंने अपना कार्यक्रम लिखने का फैसला किया।

मेरे लिए "xml -> xsd -> क्लासेस" रूट के साथ समस्या यह थी कि यह सिर्फ एक गांठ कोड उत्पन्न करता था जो पूरी तरह से अप्राप्य था और मैंने इसे समाप्त कर दिया।

यह किसी भी तरह से सुरुचिपूर्ण नहीं है लेकिन इसने मेरे लिए काम किया।

आप इसे यहाँ प्राप्त कर सकते हैं: यदि आपको पसंद है तो कृपया सुझाव दें।

SimpleXmlToCode


1
गलत कोड बनाता है: // तत्व [XmlIgnore] सार्वजनिक DateTime मान {प्राप्त करें; सेट; } [XmlText] सार्वजनिक स्ट्रिंग ValueString {प्राप्त मान? "सही गलत"; } सेट {मान = मान == "सच"; }}
एंड्रे फिडलर

और निर्माता अनावश्यक हैं + आपको सार्वजनिक रूप से दिखाई देने वाले सदस्यों के लिए टिप्पणियों को शामिल करना चाहिए
एन्ड्रे फिडलर

1
मेरे बचाव में यह कुछ ऐसा था जिसे मैंने बहुत तेज़ी से एक साथ थप्पड़ मारा था जो मेरे लिए काम करता था। मैं इसमें वापस नहीं गया, लेकिन किसी भी परिवर्तन को रेपो में योगदान देने के लिए स्वतंत्र महसूस करता हूं।
Talon

मैं कुछ महीनों के लिए इसका उपयोग कर रहा हूं - यह बिल्कुल सही नहीं है, लेकिन यह काफी उपयोगी है और मुझे लगता है कि यह वीएस2013 के पेस्ट की तुलना में एक्सएमएल के रूप में बहुत अधिक पठनीय / सरल XML उत्पन्न करता है। बहुत सराहना की तालोन ने।
कोडचीनचिल्ला

6

आपको svcutil ( svcutil प्रश्न ) पर विचार करना चाहिए

दोनों xsd.exe और svcutil XML स्कीमा फ़ाइल (.xsd) पर काम करते हैं। आपके XML को इन दोनों उपकरणों में से किसी एक स्कीमा फ़ाइल के अनुरूप होना चाहिए।

ध्यान दें कि विभिन्न 3 पार्टी उपकरण भी इसके लिए मौजूद हैं।


3

आप डारिन द्वारा सुझाए गए अनुसार xsd का उपयोग कर सकते हैं।

इसके अलावा यह अधिक उचित स्कीमा बनाने के लिए test.xsd-file को संपादित करने के लिए अनुशंसित है।

type="xs:string"type="xs:int"पूर्णांक मानों के लिए परिवर्तित किया
minOccurs="0"जा सकता है minOccurs="1"जहां फ़ील्ड की आवश्यकता होती है
maxOccurs="unbounded"उसे बदल दिया जा सकता है maxOccurs="1"जहां केवल एक आइटम की अनुमति दी जाती है

यदि आप अपने डेटा को और अधिक मान्य करना चाहते हैं, तो आप अधिक उन्नत xsd-s बना सकते हैं, लेकिन यह कम से कम आपको जनरेट किए गए c # में उचित डेटा प्रकार देगा।


1

XSD फ़ाइल से स्कीमा वर्ग बनाने के लिए सिंटैक्स का उपयोग करें।

C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\

0

XML को C # क्लास में बदलने के लिए:

  • Microsoft Visual Studio मार्केटप्लेस पर नेविगेट करें: - https://marketplace.visualstudio.com
  • सर्च बार में टेक्स्ट डालें: - xml to class code tool
  • एप्लिकेशन को डाउनलोड, इंस्टॉल और उपयोग करें

नोट: समय की परिपूर्णता में, इस एप्लिकेशन को बदला जा सकता है, लेकिन संभावना है, एक और उपकरण होगा जो एक ही काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.