क्या मैं XML फ़ाइल से C # क्लास उत्पन्न कर सकता हूँ?
क्या मैं XML फ़ाइल से C # क्लास उत्पन्न कर सकता हूँ?
जवाबों:
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 जनरेटर में एक बग है, लेकिन वर्कअराउंड हैं ।
xsd
चलाने के लिए उपयोग करें ।
xsd.exe
के तहत पाया जा सकता है:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
इसमें पाया गया: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
यदि आप वीएस 2012 (या नए) में .NET 4.5 परियोजना पर काम कर रहे हैं, तो आप अपनी XML फ़ाइल को कक्षाओं के रूप में विशेष पेस्ट कर सकते हैं।
EDIT > Paste Special > Paste XML As Classes
xsd
, लेकिन आउटपुट उसी के बारे में है।
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` के साथ बदलें
पहले मुझे लगा कि पेस्ट स्पेशल पवित्र कब्र थी! लेकिन फिर मैंने इसकी कोशिश की और मेरे बाल इंडियाना जोन्स फिल्म की तरह सफेद हो गए।
लेकिन अब मैं 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; }
मुझे एहसास है कि यह एक पुरानी पोस्ट है और आप शायद आगे बढ़ चुके हैं।
लेकिन मुझे भी आपकी यही समस्या थी इसलिए मैंने अपना कार्यक्रम लिखने का फैसला किया।
मेरे लिए "xml -> xsd -> क्लासेस" रूट के साथ समस्या यह थी कि यह सिर्फ एक गांठ कोड उत्पन्न करता था जो पूरी तरह से अप्राप्य था और मैंने इसे समाप्त कर दिया।
यह किसी भी तरह से सुरुचिपूर्ण नहीं है लेकिन इसने मेरे लिए काम किया।
आप इसे यहाँ प्राप्त कर सकते हैं: यदि आपको पसंद है तो कृपया सुझाव दें।
आपको svcutil ( svcutil प्रश्न ) पर विचार करना चाहिए
दोनों xsd.exe और svcutil XML स्कीमा फ़ाइल (.xsd) पर काम करते हैं। आपके XML को इन दोनों उपकरणों में से किसी एक स्कीमा फ़ाइल के अनुरूप होना चाहिए।
ध्यान दें कि विभिन्न 3 पार्टी उपकरण भी इसके लिए मौजूद हैं।
आप डारिन द्वारा सुझाए गए अनुसार xsd का उपयोग कर सकते हैं।
इसके अलावा यह अधिक उचित स्कीमा बनाने के लिए test.xsd-file को संपादित करने के लिए अनुशंसित है।
type="xs:string"
type="xs:int"
पूर्णांक मानों के लिए परिवर्तित किया
minOccurs="0"
जा सकता है minOccurs="1"
जहां फ़ील्ड की आवश्यकता होती है
maxOccurs="unbounded"
उसे बदल दिया जा सकता है maxOccurs="1"
जहां केवल एक आइटम की अनुमति दी जाती है
यदि आप अपने डेटा को और अधिक मान्य करना चाहते हैं, तो आप अधिक उन्नत xsd-s बना सकते हैं, लेकिन यह कम से कम आपको जनरेट किए गए c # में उचित डेटा प्रकार देगा।
XSD फ़ाइल से स्कीमा वर्ग बनाने के लिए सिंटैक्स का उपयोग करें।
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
XML को C # क्लास में बदलने के लिए:
नोट: समय की परिपूर्णता में, इस एप्लिकेशन को बदला जा सकता है, लेकिन संभावना है, एक और उपकरण होगा जो एक ही काम करता है।