এক্সএসডি থেকে নেট নেট ক্লাস কীভাবে তৈরি করা যায়?


317

ভিজুয়াল স্টুডিও 2010 ব্যবহার করে একটি এক্সএসডি ফাইল থেকে .NET 4.0 সি # শ্রেণি (সত্তা) উত্পন্ন করার বিকল্পগুলি কী কী?


@ ডিরাজউস অতীতে আমার এই কাজটি ছিল, তবে এখন আমি যখন যুক্ত করি তখন এটি ক্লাসের পরিবর্তে ডেটাসেট শ্রেণি হিসাবে উত্পন্ন হয় I আমি কেবল একটি বিদ্যমান আইটেম যুক্ত করেছি এবং এক্সএসডি ফাইলটি নির্বাচন করি।
msmucker0527

উত্তর:


490

যথেষ্ট সহজ; শুধু চালান (বনাম কমান্ড প্রম্পটে)

xsd your.xsd /classes

(যা তৈরি করবে your.cs)। তবে দ্রষ্টব্য, এখানে বেশিরভাগ অভ্যন্তরীণ বিকল্পগুলি 2.0 এর পরে খুব বেশি পরিবর্তন হয়নি

বিকল্পগুলির জন্য, ব্যবহার xsd /?বা এমএসডিএন দেখুন ; উদাহরণস্বরূপ /enableDataBindingদরকারী হতে পারে।


83
"সি: \ প্রোগ্রাম ফাইল (x86) \ মাইক্রোসফ্ট এসডিকে s উইন্ডোজ \ v8.1A \ বিন \ নেটফএক্স 4.5.1 সরঞ্জামসমূহ \ xsd.exe" / শ্রেণি / ভাষা: সিএস your.xsd
জর্জেসসি

2
ক্রেভেল আবার উদ্ধার! যদিও এই উত্তরটি 100% সঠিক, তবে আমার ক্ষেত্রে আমি PATH এনভায়রনমেন্ট ভেরিয়েবলের সাথে xsd.exe ডিরেক্টরি পথ যুক্ত করা সহজ বলে মনে করেছি। আমার কম্পিউটার -> বৈশিষ্ট্য -> উন্নত -> পরিবেশের ভেরিয়েবল -> পথ - এবং "সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকে s উইন্ডোজ \ v8.1A \ বিন \ নেটফএক্স 4.5.1 সরঞ্জামসমূহ \" (অবশ্যই আপনার মেশিনে নির্দিষ্ট উইন্ডো এবং .NET সংস্করণ উভয়ই মনোযোগ দিন) - শুভ কোডিং!
পিম্বারউবার্স

15
কেসটির জন্য আপনার বেশ কয়েকটি আন্তঃসংযোগযুক্ত স্কিমা সংজ্ঞা রয়েছে কেবল সেগুলির নাম দিন। xsd schema1.xsd schema2.xsd schema3.xsd /c
মিভরা

56

xsd.exe হিসাবে মার্ক গ্রাভেল উল্লেখ করেছেন। আইএমও ওঠার জন্য দ্রুততম উপায়।

অথবা আপনার যদি আরও নমনীয়তা / বিকল্পগুলির প্রয়োজন হয়:

xsd2code ভিএস অ্যাড-ইন ( কোডপ্লেক্স )


10
আমি আমার জন্য মোটেও কাজ করার জন্য xsd2code পেতে পারি না। xsd.exe আরও শক্তিশালী, তবে স্কিমার সাথে লড়াই করে যার "বিজ্ঞপ্তি" গ্রুপ রয়েছে।
জেফ

xsd2code ভিজ্যুয়াল স্টুডিও 2017 এ কাজ করে এবং আমি যা খুঁজছিলাম ঠিক সেটাই ছিল। আপনাকে এটি প্রথমে প্রোগ্রাম ফাইল (x86) ডিরেক্টরিতে চালাতে হবে, তারপরে ভার্সিক্স ইনস্টলারটি ব্যবহার করুন। তাহলে এটি দুর্দান্ত কাজ করে। এটি এক্সএসডি.এক্সইএইএইএস এর কাছে সুপরিসর ছিল যা অ্যারে তৈরি করে [] [] তালিকাগুলির পরিবর্তে। একটি বিশাল .xsd ছিল এবং এক্সএমএলকে সিরিয়ালায়িত করার জন্য আমার ক্লাস তৈরি করা দরকার। xsd.exe সিরিয়ালযোগ্য কোড (। নেট কোর 2) উত্পন্ন করবে না এবং xsd2code দুর্দান্ত কাজ করেছে
হাঞ্জোলো

জন্য ভিস্যুয়াল স্টুডিও 2015 ই 2017 XSD2CODE এর আপডেট করা সংস্করণ এখানে: marketplace.visualstudio.com/...
Gianpiero

মূল xsd2code এখন xsd2code ++। সম্প্রদায়ের সংস্করণটি ভিএস মার্কেটপ্লেসে
জের্ড কে

17

আমি আপনাকে এখানে Vs2017 এবং Vs2019 ব্যবহারের সবচেয়ে সহজ উপায়টি দেখিয়েছি আপনার এক্সএসডি ভিজ্যুয়াল স্টুডিওতে খুলুন এবং প্রস্তাবিত ইউআরএল হিসাবে একটি নমুনা এক্সএমএল ফাইল উত্পন্ন করুন ।

  1. একবার আপনি নীচের মত ডিজাইন ভিউতে আপনার এক্সএসডি খুললে, এক্সএমএল স্কিমা এক্সপ্লোরারটিতে ক্লিক করুন এখানে চিত্র বর্ণনা লিখুন

2. "এক্সএমএল স্কিমা এক্সপ্লোরার" এর মধ্যে রুট / ডেটা নোড সন্ধান করতে সমস্ত দিক দিয়ে স্ক্রোল করুন। রুট / ডেটা নোডে ডান ক্লিক করুন এবং এটি "নমুনা এক্সএমএল উত্পন্ন করুন" প্রদর্শিত হবে। যদি এটি না দেখায় তবে এর অর্থ আপনি ডেটা উপাদান নোডে নেই তবে আপনি কোনও ডেটা সংজ্ঞা নোডে রয়েছেন।

এখানে চিত্র বর্ণনা লিখুন

  1. ক্লিপবোর্ডে আপনার উত্পন্ন এক্সএমএল অনুলিপি করুন
  2. আপনার সমাধানে একটি নতুন খালি শ্রেণি তৈরি করুন এবং শ্রেণীর সংজ্ঞাটি মুছুন। শুধুমাত্র নেমস্পেস থাকা উচিত
  3. আপনার মাউস পয়েন্টারটি আপনার শ্রেণীর অভ্যন্তরে ফোকাস করার সময়, সম্পাদনা নির্বাচন করুন>> বিশেষ আটকান>> ক্লাস হিসাবে এক্সএমএল আটকান choose

দুর্ভাগ্যক্রমে, এটি সমস্ত শ্রেণি উত্পাদন করার গ্যারান্টিযুক্ত নয়, তবে এটি একটি সিওএল কৌশল trick
জন জাব্রোস্কি

1
@ জোহানজ্যাব্রোস্কি আপনার কি কোনও মামলা করেছে যে এটি আপনার পক্ষে কাজ করে না? এটি নমুনা এক্সএমএল উপর নির্ভর করে, আপনি যদি সমস্ত শ্রেণি এবং সদস্যদের সাথে স্যাম্পল এক্সএমএল তৈরি করতে পারেন তবে কোনও শ্রেণি এবং সদস্যকে মিস করার কোনও কারণ নেই।
ব্যাটম্যাচি

আমার পয়েন্টটি হল কাজের জন্য গ্যারান্টিযুক্ত ২ য় ধাপ। তবে এটি একটি সিওএল ট্রিক।
জন জাব্রোস্কি

অসাধারণ উত্তর। আপনি কিছু ঠান্ডা বিয়ার প্রাপ্য !!
হেনরিগুইলেন 17

14

xsd.exe যখন আপনার বিজ্ঞপ্তিযুক্ত রেফারেন্স থাকে তখন ভাল কাজ করে না (যেমন একটি টাইপ প্রত্যক্ষ বা পরোক্ষভাবে একটি নিজস্ব ধরণের একটি উপাদানটির মালিক হতে পারে)।

যখন বিজ্ঞপ্তি সংক্রান্ত তথ্যসূত্র উপস্থিত থাকে, আমি এক্সএসডি 2 কোড ব্যবহার করি। এক্সএসডি 2 কোড কোডটি বিজ্ঞপ্তি সংক্রান্ত রেফারেন্সগুলিকে ভালভাবে পরিচালনা করে এবং ভিএস আইডিইয়ের মধ্যে কাজ করে যা একটি বড় প্লাস। এটিতে সিরিয়ালাইজেশন / ডিসরিয়ালাইজেশন কোড তৈরির মতো ব্যবহার করতে পারেন এমন অনেকগুলি বৈশিষ্ট্যও রয়েছে। আপনি যদি সিরিয়ালাইজেশন তৈরি করছেন তবে জেনারেট এক্সএমএলটি ডিগ্রিবিউট চালু করেছেন তা নিশ্চিত করুন (অন্যথায় আপনি সমস্ত উপাদানগুলিতে সংজ্ঞায়িত না হলে অর্ডার দেওয়ার ক্ষেত্রে ব্যতিক্রম পাবেন)।

উভয়ই পছন্দ বৈশিষ্ট্যটির সাথে ভাল কাজ করে না। আপনি যে ধরণের পছন্দ করতে চান তার পরিবর্তে অবজেক্টের তালিকা / সংগ্রহগুলি শেষ করবেন। আমি যদি সম্ভব হয় তবে আপনার এক্সএসডি-তে পছন্দ এড়ানোর পরামর্শ দিচ্ছি কারণ এটি দৃ strongly়ভাবে টাইপ করা শ্রেণিতে ভালভাবে সিরিয়ালাইজ / ডিসরিয়ালাইজ না করে। যদিও আপনি যদি এই সম্পর্কে যত্ন না পান তবে এটি কোনও সমস্যা নয়।

Xsd2code- এর যে কোনও বৈশিষ্ট্যটি সিস্টেম.এক্সএমএল.এক্সএমএল উপাদান হিসাবে ডিসরিয়ালাইজ করে যা আমি সত্যিই সুবিধাজনক বলে মনে করি তবে আপনি যদি শক্ত টাইপযুক্ত বিষয়গুলি চান তবে এটি একটি সমস্যা হতে পারে। আমি প্রায়শই কাস্টম কনফিগার ডেটা মঞ্জুরি দেওয়ার সময় যে কোনওটি ব্যবহার করি, তাই কোনও এক্সএমএলমেট অন্য কোনও এক্সএমএল ডিসরিওলাইজারের কাছে যেতে সুবিধাজনক যা অন্যত্র কাস্টম সংজ্ঞায়িত।


আমি আপনার উত্তরটি দেখে xsd2code যুক্ত করেছি। বিজ্ঞপ্তি গোষ্ঠী রেফারেন্সগুলি যত্ন নেওয়ার জন্য আমাদের কি কিছু পরিবর্তন করার দরকার আছে? এটি আমার জন্য ডিফল্ট বৈশিষ্ট্যগুলি নিয়ে কাজ করছে না
জ্যোৎস্না সোনওয়ানে

বিজ্ঞপ্তিযুক্ত রেফারেন্সগুলি নিয়ে কাজ করার জন্য আমাকে বিশেষ কিছু করতে হয়নি। আপনি যদি নতুন প্রশ্ন হিসাবে এক্সএমএল পোস্ট করেন এবং এখানে একটি লিঙ্ক যুক্ত করেন তবে আমি এটি একবার দেখে খুশি।
ভোটকফি

10

একটি জন্য দ্রুত এবং অলস সমাধান , (এবং সব সময়ে বনাম ব্যবহার করছেন না) এই অনলাইন কনভার্টার ব্যবহার করে দেখুন:

এক্সএসডি => এক্সএমএল => সি # ক্লাস

এক্সএসডি উদাহরণ:

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="orderperson" type="xs:string"/>
      <xs:element name="shipto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="address" type="xs:string"/>
            <xs:element name="city" type="xs:string"/>
            <xs:element name="country" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="item" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="note" type="xs:string" minOccurs="0"/>
            <xs:element name="quantity" type="xs:positiveInteger"/>
            <xs:element name="price" type="xs:decimal"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="orderid" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

এক্সএমএলে রূপান্তর:

<?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid Technologies Online Tools 1.0 (https://www.liquid-technologies.com) -->
<shiporder xsi:noNamespaceSchemaLocation="schema.xsd" orderid="string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <orderperson>string</orderperson>
  <shipto>
    <name>string</name>
    <address>string</address>
    <city>string</city>
    <country>string</country>
  </shipto>
  <item>
    <title>string</title>
    <note>string</note>
    <quantity>3229484693</quantity>
    <price>-6894.465094196054907</price>
  </item>
  <item>
    <title>string</title>
    <note>string</note>
    <quantity>2181272155</quantity>
    <price>-2645.585094196054907</price>
  </item>
  <item>
    <title>string</title>
    <note>string</note>
    <quantity>2485046602</quantity>
    <price>4023.034905803945093</price>
  </item>
  <item>
    <title>string</title>
    <note>string</note>
    <quantity>1342091380</quantity>
    <price>-810.825094196054907</price>
  </item>
</shiporder>

যা এই শ্রেণি কাঠামোতে রূপান্তর করে:

   /* 
    Licensed under the Apache License, Version 2.0

    http://www.apache.org/licenses/LICENSE-2.0
    */
using System;
using System.Xml.Serialization;
using System.Collections.Generic;
namespace Xml2CSharp
{
    [XmlRoot(ElementName="shipto")]
    public class Shipto {
        [XmlElement(ElementName="name")]
        public string Name { get; set; }
        [XmlElement(ElementName="address")]
        public string Address { get; set; }
        [XmlElement(ElementName="city")]
        public string City { get; set; }
        [XmlElement(ElementName="country")]
        public string Country { get; set; }
    }

    [XmlRoot(ElementName="item")]
    public class Item {
        [XmlElement(ElementName="title")]
        public string Title { get; set; }
        [XmlElement(ElementName="note")]
        public string Note { get; set; }
        [XmlElement(ElementName="quantity")]
        public string Quantity { get; set; }
        [XmlElement(ElementName="price")]
        public string Price { get; set; }
    }

    [XmlRoot(ElementName="shiporder")]
    public class Shiporder {
        [XmlElement(ElementName="orderperson")]
        public string Orderperson { get; set; }
        [XmlElement(ElementName="shipto")]
        public Shipto Shipto { get; set; }
        [XmlElement(ElementName="item")]
        public List<Item> Item { get; set; }
        [XmlAttribute(AttributeName="noNamespaceSchemaLocation", Namespace="http://www.w3.org/2001/XMLSchema-instance")]
        public string NoNamespaceSchemaLocation { get; set; }
        [XmlAttribute(AttributeName="orderid")]
        public string Orderid { get; set; }
        [XmlAttribute(AttributeName="xsi", Namespace="http://www.w3.org/2000/xmlns/")]
        public string Xsi { get; set; }
    }

}

মনোযোগ! অ্যাকাউন্টে বিবেচনা করুন যে এটি কেবল গেট-ইউ-স্টার্ট করা, ফলাফল অবশ্যই সংশোধন প্রয়োজন!


তোমাকে অনেক ধন্যবাদ. এটি NET- এ এক্সএমএল স্কিমা এবং এক্সএমএল শিখছেন তাদের জন্য এটি একটি ভাল উদাহরণ হিসাবে ব্যবহার করা যেতে পারে
thyranitp

অসাধারণ উত্তর। আপনি কিছু ঠান্ডা বিয়ার প্রাপ্য!
হেনরিগুইলেন 17

5

আমি সরাসরি XSDব্যাচ স্ক্রিপ্টে .xsdফাইল এবং ক্লাস তৈরি করতে ব্যবহার করি XML:

set XmlFilename=Your__Xml__Here
set WorkingFolder=Your__Xml__Path_Here

set XmlExtension=.xml
set XsdExtension=.xsd

set XSD="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1\Tools\xsd.exe"

set XmlFilePath=%WorkingFolder%%XmlFilename%%XmlExtension%
set XsdFilePath=%WorkingFolder%%XmlFilename%%XsdExtension%

%XSD% %XmlFilePath% /out:%WorkingFolder%
%XSD% %XsdFilePath% /c /out:%WorkingFolder%

2

আমার ক্ষেত্রে যে আদেশটি কাজ করেছিল তা হ'ল:

xsd /c your.xsd 

1

মার্ক গ্র্যাভেলস উত্তরটি আমার পক্ষে সঠিক ছিল তবে আমার এক্সএসডি .xML বাড়ানো ছিল। আমি যখন এক্সএসডি প্রোগ্রামটি ব্যবহার করেছি তখন তা দিয়েছে:
- The table (Amt) cannot be the child table to itself in nested relations.

এই KB325695 অনুসারে আমি .xML থেকে .xsd এ এক্সটেনশনটির নামকরণ করেছি এবং এটি দুর্দান্ত কাজ করেছে।


1

আমি xsd.exeউইন্ডোজ কমান্ড প্রম্পটে ব্যবহার করেছি ।

তবে, যেহেতু আমার এক্সএমএল বেশ কয়েকটি অনলাইন এক্সএমএলকে রেফারেন্স করেছে (আমার ক্ষেত্রে http://www.w3.org/1999/xlink.xsdযা উল্লেখ করা হয়েছে http://www.w3.org/2001/xml.xsd) আমাকে সেই স্কিম্যাটিক্সগুলিও ডাউনলোড করতে হয়েছিল, সেগুলি আমার এক্সএসডি-র মতো একই ডিরেক্টরিতে রেখেছিল এবং তারপরে সেই ফাইলগুলি কমান্ডটিতে তালিকাবদ্ধ করতে হবে:

"সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v8.1A \ বিন \ নেটফএক্স 4.5.1 সরঞ্জামসমূহ \ xsd.exe" / শ্রেণি / ভাষা: সিএস your.xsd xlink.xsd xml.xsd


এটি অ্যামাজন মার্কেট প্লেস এক্সএসডি এর মতো হবে না যেখানে আপাতত ক্লাস তৈরি করা এটি হবে :-) আমাকে তাদের সাথে একবার কাজ করতে হবে, আমি আর কখনও তাদের স্পর্শ করব না বা সিএস # তে অ্যামাজন এক্সএসডি ফাইল ব্যবহার করে কোনও কাজ করব না, আছে এ জাতীয় অশান্তি এটা অবাস্তব।
shawty

@ শাওয়াটি আমি জিআইএস স্ট্যান্ডার্ড - ডাব্লুএফএস এবং ডাব্লুএমএস - নিয়ে কাজ করছিলাম যা বড়, বিজ্ঞপ্তি ক্রস-রেফারেন্সড এক্সএসডি দ্বারা সংজ্ঞায়িত করা হয়। xsd.exeএটির সাথে একটি বিশাল জগাখিচুড়ি ছিল কারণ এটি বিজ্ঞপ্তিযুক্ত রেফারেন্স পছন্দ করে না তবে আমি শেষ পর্যন্ত সফল হয়েছি।
জিজ্ঞাসা বি।

হ্যাঁ, এটা আমার দ্বিতীয় অনুমান হত। দেখা সেই খুব, Thier কোথায় কাছাকাছি খারাপ হিসাবে হিসাবে Amazons কাপড় যদিও ... দেয় আমাকে স্মরণ দুঃস্বপ্ন শিহরিত অবস্থা
shawty

0

ডাব্লুএসডিএলের সাথে আমার এক্সএসডি ফাইলও ছিল। উপরেরটি আমার ক্ষেত্রে কাজ করে নি ত্রুটি দিয়েছে। এটি নিম্নলিখিত হিসাবে কাজ করেছে

wsdl /l:C# /out:D:\FileName.cs D:\NameApi\wsdl_1_1\RESAdapterService.wsdl 
D:\CXTypes.xsd D:\CTypes.xsd 
D:\Preferences.xsd 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.