Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

क्या कोई टूल है जो XSD फाइल को Python क्लास में कन्वर्ट कर सके जैसे JAXB Java के लिए करता है?


मैं generateDS की सिफारिश करूंगा XSD फाइल को Python क्लास में कन्वर्ट करने के लिए। मेरी राय में, यह उक्त उद्देश्य के लिए एक अच्छा टूल है।

यह (generateDS) सभी मेथड्स (सेटर्स और गेटर्स, XML में एक्सपोर्ट, XML से इम्पोर्ट) के साथ Python क्लास जनरेट करता है। यह अच्छा काम करता है और बहुत अच्छी तरह से काम करता है!

generateDS का उपयोग

इंस्टॉलेशन

pip install generateDS

बेसिक उपयोग

# XSD से Python क्लास जनरेट करें
generateDS.py -o output.py schema.xsd

# विकल्पों के साथ
generateDS.py -o output.py --member-specs=dict schema.xsd

जनरेटेड कोड उदाहरण

दिए गए XSD के लिए:


  
    
      
        
        
      
    
  

generateDS निम्नलिखित जैसा कुछ जनरेट करेगा:

class Person:
    def __init__(self, name=None, age=None):
        self.name = name
        self.age = age
    
    def export(self, outfile, level=0):
        # XML में एक्सपोर्ट
        ...
    
    @classmethod
    def parse(cls, infile):
        # XML से पार्स
        ...
    
    # गेटर्स/सेटर्स
    def get_name(self): return self.name
    def set_name(self, name): self.name = name

अन्य विकल्प

टूलविवरणस्थिति
generateDSसबसे लोकप्रिय, परिपक्व, पूर्ण विशेषताओं वालासक्रिय
xsdataआधुनिक, टाइप हिंट्स सपोर्ट, dataclassesसक्रिय (अनुशंसित नए प्रोजेक्ट्स के लिए)
pyxbपुराना, कम रखरखावनिष्क्रिय
xmlschemaस्कीमा वैलिडेशन + कोड जनरेशनसक्रिय
lxml.objectifyडायनामिक XML-ऑब्जेक्ट मैपिंगसक्रिय

xsdata उदाहरण (आधुनिक विकल्प)

pip install xsdata

# जनरेट करें
xsdata schema.xsd --package mypackage

# जनरेटेड कोड (dataclasses के साथ)
from dataclasses import dataclass
from xsdata.models.datatype import XmlDateTime

@dataclass
class Person:
    name: str
    age: int

JAXB तुलना

विशेषताJAXB (Java)generateDS/xsdata (Python)
एनोटेशन-आधारितहां (@XmlRootElement, आदि)नहीं (स्कीमा से जनरेटेड)
रनटाइम बाइंडिंगहांआंशिक
स्कीमा कंपाइलेशनxjc टूलgenerateDS/xsdata CLI
वैलिडेशनबिल्ट-इनxmlschema के साथ

निष्कर्ष: Python के लिए generateDS परिपक्व विकल्प है, लेकिन नए प्रोजेक्ट्स के लिए xsdata (टाइप हिंट्स, dataclasses, आधुनिक Python) बेहतर विकल्प हो सकता है। दोनों JAXB जैसी कार्यक्षमता प्रदान करते हैं।

  1. क्या Java में Enum किसी क्लास को एक्सटेंड कर सकता है? क्या Java में Enum किसी क्लास को एक्सटेंड कर सकता है?

    नहीं, Java में सभी एनम अंतर्निहित रूप से java.lang.Enum को एक्सटेंड करते हैं। चूंकि Java बहु-विरासत का समर्थन नहीं करता, एनम किसी अन्य क्लास को एक्सटेंड नहीं कर सकते।त्रुटि उदाहरणclass Sample { } enum Scooters extends Sample { } // संकलन त्रुटिसंकलन त्रुटिEnumExample.java:5: error: { expected enum

  1. Java में JSON ऑब्जेक्ट्स को फाइल में कैसे लिखें? Java में JSON ऑब्जेक्ट्स को फाइल में कैसे लिखें?

    JSON व्यापक रूप से उपयोग किए जाने वाले डेटा-इंटरचेंज फॉर्मेट्स में से एक है और यह हल्का और भाषा-स्वतंत्र है। json.simple एक हल्की JSON प्रोसेसिंग लाइब्रेरी है जिसका उपयोग JSON फाइल्स लिखने के लिए किया जा सकता है और इसका उपयोग JSON टेक्स्ट को एन्कोड या डिकोड करने के लिए किया जा सकता है और यह JSON स्प

  1. Java में JTextField में पैडिंग कैसे जोड़ें? Java में JTextField में पैडिंग कैसे जोड़ें?

    JTextField JTextComponent क्लास का सबक्लास है और यह सबसे महत्वपूर्ण घटकों में से एक है जो उपयोगकर्ता को सिंगल-लाइन फॉर्मेट में टेक्स्ट मान इनपुट करने की अनुमति देता है। JTextField क्लास ActionListener इंटरफेस जनरेट करेगा जब हम इसके अंदर कुछ इनपुट दर्ज करने का प्रयास करते हैं। JTextField क्लास के महत