2011-03-03 15 views
6

से मजबूत टाइप किए गए ऑब्जेक्ट में मेरे पास कुछ एक्सएमएल फाइलें हैं जिनके लिए मुझे काम करने की ज़रूरत है, और मैंने हमेशा XElement ऑब्जेक्ट्स का उपयोग किया है और विशेषता नाम या XElement के मान के माध्यम से डेटा खींच लिया है।एक्सएमएल

मुझे पता है कि सी # में एक्सएमएल का उपयोग करने का एक बेहतर तरीका होना चाहिए। एक्सएमएल फ़ाइल से ऑटो टाइप या मैन्युअल रूप से एक मजबूत टाइप की गई वस्तु उत्पन्न करने का सबसे अच्छा तरीका क्या है? मैं एक List<Group> कि सबसे अच्छा होगा में एक एक्सएमएल फ़ाइल को पार्स सकता है

एक्सएमएल

<Group id="####"> 
    <title>Some Title</title> 
    <description>some description</description> 
    <Rule id="ID_##" severity="medium" weight="10.0"> 
     <version>1.001</version> 
     <title>Another Title</title> 
     <description>Very long description</description> 
     <fixtext fixref="F-31r1_fix">Description of fix</fixtext> 
     <fix id="F-31r1_fix"/> 
     <check system="C-7883r4_chk"> 
      <check-content-ref name="M" href="URI"/> 
      <check-content>Content</check-content> 
     </check> 
    </Rule> 
</Group> 

के रूप में है।

एकमात्र तरीका मैं ऐसा करने के लिए सोच सकता हूं मैन्युअल रूप से समूह, नियम, और जांच वस्तुओं को मैन्युअल रूप से बनाते हैं और डेटा को मैन्युअल रूप से असाइन करते हैं। यदि ऐसा करने के लिए एक बेहतर, अधिक स्वचालित तरीका है, तो कृपया मुझे बताएं!

उत्तर

8

आप xsd.exe (जो विंडोज़ एसडीके के साथ स्थापित करता है, लेकिन संस्करण के आधार पर विभिन्न स्थानों में - मेरा वर्तमान में C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin में) फ़ाइल से उत्पन्न और एक्सएसडी, या एक सीएस कोड फ़ाइल का उपयोग कर सकते हैं।

उदाहरण के लिए:

xsd.exe myFile.xml 

आप एक्सएमएल फ़ाइल के स्थान में myFile.xsd मिल जाएगा।

फिर,

xsd.exe myFile.xsd /c 

आप परिभाषित वर्गों के साथ एक .cs फ़ाइल मिल जाएगा। पूर्ण विकल्पों के लिए xsd.exe /? आज़माएं (आप नेमस्पेस आदि भी निर्दिष्ट कर सकते हैं)।

1

यदि आपके पास XML के लिए स्कीमा है तो आप xsd.exe (windows SDK), svcutil.exe (WCF) या (मेरी व्यक्तिगत प्राथमिकता) जैसे ओपन सोर्स विकल्प (Xsd2Code) जैसे टूल का उपयोग करके कक्षाएं उत्पन्न कर सकते हैं।

1

आप अपने वर्ग पर भी टिप्पणियां डाल सकता है और फिर एक XmlSerializer का उपयोग को क्रमानुसार/एक्सएमएल से/अपनी कक्षा उदाहरणों deserialize करने के लिए - यदि आप एक अधिक अनुकूलित दृष्टिकोण की जरूरत है अपने वर्ग भी IXmlSerializable लागू है तो भीतर है कि क्रमांकन/deserialization कोड डाल कक्षा।

4

Linq to XSD की जाँच करें:

LINQ XSD करने के लिए प्रौद्योगिकी टाइप एक्सएमएल प्रोग्रामिंग के लिए समर्थन के साथ नेट डेवलपर्स प्रदान करता है। LINQ से XSD LINQ प्रोजेक्ट में योगदान देता है (.NET भाषा एकीकृत क्वेरी); विशेष रूप से, LINQ से XSD मौजूदा LINQ से XML तकनीक को बढ़ाता है।

1

आप आपकी आवश्यकताओं के अनुरूप XML स्वरूप को बदलने में सक्षम हैं, तो एक तरह से मैं जानता हूँ कि की WSDL उपयोग कर रहा है।