「VB.netでAmazon SQSからメッセージを取得するサンプルプログラム作りました。」で、
Amazon SQS取得したメッセージは、XMLです。
このXMLからVB.netのClassを生成したいと思います。
開発環境は、Visual Studio 2017 Communityです。
スポンサーリンク
まずは、XSDファイルを作成します。
プロジェクトを右クリック>追加>新しい項目

「XML to Schema」を選択し、名前を「AmazonSQSMessage.xsd」とし、「追加」をクリック

「XMLの入力または貼り付け」をクリック

Amazon SQSから取得したXMLを貼り付けて「OK」をクリック

XML が追加されたので、「OK」をクリック

「AmazonSQSMessage.xsd」ができました。

コードはこうなっています。
「AmazonSQSMessage.xsd」のコード
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Notification">
<xs:complexType>
<xs:sequence>
<xs:element name="NotificationMetaData">
<xs:complexType>
<xs:sequence>
<xs:element name="NotificationType" type="xs:string" />
<xs:element name="PayloadVersion" type="xs:decimal" />
<xs:element name="UniqueId" type="xs:string" />
<xs:element name="PublishTime" type="xs:dateTime" />
<xs:element name="SellerId" type="xs:string" />
<xs:element name="MarketplaceId" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NotificationPayload">
<xs:complexType>
<xs:sequence>
<xs:element name="AnyOfferChangedNotification">
<xs:complexType>
<xs:sequence>
<xs:element name="OfferChangeTrigger">
<xs:complexType>
<xs:sequence>
<xs:element name="MarketplaceId" type="xs:string" />
<xs:element name="ASIN" type="xs:string" />
<xs:element name="ItemCondition" type="xs:string" />
<xs:element name="TimeOfOfferChange" type="xs:dateTime" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Summary">
<xs:complexType>
<xs:sequence>
<xs:element name="NumberOfOffers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="OfferCount">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedByte">
<xs:attribute name="condition" type="xs:string" use="required" />
<xs:attribute name="fulfillmentChannel" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LowestPrices">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="LowestPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="LandedPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="Amount" type="xs:unsignedShort" />
<xs:element name="CurrencyCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ListingPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="Amount" type="xs:unsignedShort" />
<xs:element name="CurrencyCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Shipping">
<xs:complexType>
<xs:sequence>
<xs:element name="Amount" type="xs:unsignedByte" />
<xs:element name="CurrencyCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Points">
<xs:complexType>
<xs:sequence>
<xs:element name="PointsNumber" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="condition" type="xs:string" use="required" />
<xs:attribute name="fulfillmentChannel" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="BuyBoxPrices">
<xs:complexType>
<xs:sequence>
<xs:element name="BuyBoxPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="LandedPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="Amount" type="xs:unsignedShort" />
<xs:element name="CurrencyCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ListingPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="Amount" type="xs:unsignedShort" />
<xs:element name="CurrencyCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Shipping">
<xs:complexType>
<xs:sequence>
<xs:element name="Amount" type="xs:unsignedByte" />
<xs:element name="CurrencyCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="condition" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SalesRankings">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="SalesRank">
<xs:complexType>
<xs:sequence>
<xs:element name="ProductCategoryId" type="xs:string" />
<xs:element name="Rank" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="BuyBoxEligibleOffers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="OfferCount">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedByte">
<xs:attribute name="condition" type="xs:string" use="required" />
<xs:attribute name="fulfillmentChannel" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Offers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Offer">
<xs:complexType>
<xs:sequence>
<xs:element name="SellerId" type="xs:string" />
<xs:element name="SubCondition" type="xs:string" />
<xs:element name="SellerFeedbackRating">
<xs:complexType>
<xs:sequence>
<xs:element name="SellerPositiveFeedbackRating" type="xs:unsignedByte" />
<xs:element name="FeedbackCount" type="xs:unsignedShort" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ShippingTime">
<xs:complexType>
<xs:attribute name="minimumHours" type="xs:unsignedShort" use="required" />
<xs:attribute name="maximumHours" type="xs:unsignedShort" use="required" />
<xs:attribute name="availabilityType" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="ListingPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="Amount" type="xs:unsignedShort" />
<xs:element name="CurrencyCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Points">
<xs:complexType>
<xs:sequence>
<xs:element name="PointsNumber" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Shipping">
<xs:complexType>
<xs:sequence>
<xs:element name="Amount" type="xs:unsignedShort" />
<xs:element name="CurrencyCode" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ShipsFrom">
<xs:complexType>
<xs:sequence>
<xs:element name="Country" type="xs:string" />
<xs:element name="State" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="IsFulfilledByAmazon" type="xs:boolean" />
<xs:element name="IsBuyBoxWinner" type="xs:boolean" />
<xs:element name="IsFeaturedMerchant" type="xs:boolean" />
<xs:element name="ShipsDomestically" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Visual Studio 2017には、XSDをコードに変換する機能がないようなので、「Xsd2Code」という拡張機能をインストールします。
インストールする手順 はこちらの記事です。
→Xsd2CodeをVisual Studio Community 2017 にインストールしました。
「AmazonSQSMessage.xsd」を右クリック
「run xsd2code++」をクリック

「Generate」をクリック

「AmazonSQSMessage.Designer.vb」ができました。

XML→XSD→VB.netへの変換ができれば、XmlSerializerでDeserializeすることができるので、簡単になるかと思ったのですが、今のところ、上手くできていません。
できるようになったら、また記述します。