C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.87055 の関連記事表示

<< 0 >>
■87055  XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/09(Mon) 16:42:53)

    分類:[C#] 

    お世話になります。

    C#でxmlを作成してサイトへ送信するプログラムを作成しています。
    送信先サイトからxmlスキーマを取得しましたが、これはどのように使用したらいいのでしょうか?

    調べてみると、xmlを作るにあたってのルールが記載されているということは分かりました。
    xmlスキーマの中身も見て、ルールもある程度理解はできましたが、
    テキストエディタ等でスキーマを見ながらxmlを作るというのが本来の使い方なのでしょうか?

    それともプログラムでスキーマを読み込んで、整合性チェックなどを行えるものなのでしょうか?
    どのように使ったら良いかが分かりません。
    ご存じの方がおられたら教えて頂きたいです。
親記事 /過去ログ149より / 関連記事表示
削除チェック/

■87056  Re[1]: XMLスキーマの使い方について
□投稿者/ 魔界の仮面弁士 -(2018/04/09(Mon) 17:02:05)
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87065  Re[2]: XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/10(Tue) 13:14:19)
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87071  Re[3]: XMLスキーマの使い方について
□投稿者/ 魔界の仮面弁士 -(2018/04/10(Tue) 15:03:17)
    No87065 (MTK さん) に返信
    > メモリ上にデータベースを作ることができるようなもの?なんですかね。
    狭義のデータベースとはちょっと異なりますが、概ねそんな感じです。

    データベースを模した形のデータの入れ物というだけなので、
    データベースと無関係なデータを蓄えることも出来ます。


    > XML Schemaを使っているということは、データベースの制約などが書かれているのかなと想像しています。

    正確には『データベースの制約』ではなく、『DataSet 自身の制約』情報ですね。

    たとえば、データベース側は数値型の列だけど、DataSet は文字列型の列として、
    管理させている場合もあります。また、列のデータ型なども、
    データベースにとっての型ではなく、.NET にとっての型で管理されます。


    【参考情報】
    .NET の System.DateTime 型の範囲は 0001/01/01 00:00:00.0000000〜9999/12/31 23:59:59.9999999
    SQL Server の datetime 型の範囲は 1753/01/01 00:00:00.000〜9999/12/31 23:59:59.997
    Oracle の DATE 型の範囲は -4712/01/01 00:00:00〜9999/12/31 23:59:59
    Access の DATE 型の範囲は 0100/01/01 00:00:00〜9999/12/31 23:59:59


    > もし今使うならこれがいい など個人的な意見で結構ですので、オススメがあれば教えて頂けないでしょうか。
    求められている XML 構造を見ないと判断しずらいところもあるのですが:

    時には、スキーマに沿った形のクラスを設計して、
    XMLSerializer あるいは SoapFormatter で変換することもあります。

    とはいえ SOAP 通信が目的なら、Visual Studio で自動的にプロキシクラスを
    生成できるので、WSDL が提供されている場合はそれをそのまま使うことが殆どです。
    この場合、XML の存在を意識せずに済みます。

    ただ、SOAP メッセージの内容によっては、自動的に生成されるプロキシクラスでは
    対応できないこともあるので、その場合は自前で XML を構築したこともあります。

    最近は SOAP ではなく、REST で構築されたサーバーが多いですね。


    XML データを直接操作する場合については、個人的には
    XDocument を使うことが多いです。(この方法で XML を扱う場合は
    C# より VB の方が楽だったりしますが、C# でも大差はありません)
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87078  Re[4]: XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/10(Tue) 18:01:13)
    No87071 (魔界の仮面弁士 さん) に返信

    > 狭義のデータベースとはちょっと異なりますが、概ねそんな感じです。
    >
    > データベースを模した形のデータの入れ物というだけなので、
    > データベースと無関係なデータを蓄えることも出来ます。

    なるほど、まるっきりデータベースと同じという訳ではないんですね。



    > 正確には『データベースの制約』ではなく、『DataSet 自身の制約』情報ですね。
    >
    > たとえば、データベース側は数値型の列だけど、DataSet は文字列型の列として、
    > 管理させている場合もあります。また、列のデータ型なども、
    > データベースにとっての型ではなく、.NET にとっての型で管理されます。
    >
    >
    > 【参考情報】
    > .NET の System.DateTime 型の範囲は 0001/01/01 00:00:00.0000000〜9999/12/31 23:59:59.9999999
    > SQL Server の datetime 型の範囲は 1753/01/01 00:00:00.000〜9999/12/31 23:59:59.997
    > Oracle の DATE 型の範囲は -4712/01/01 00:00:00〜9999/12/31 23:59:59
    > Access の DATE 型の範囲は 0100/01/01 00:00:00〜9999/12/31 23:59:59

    DataSet=データベースではなく、DataSet上にデータベース(のようなもの)を展開してバインドしているイメージで合っているでしょうか?
    その上で、XML SchemaはDataSet側の制約なのですね。
    同じ日付の型でもここまで違うんですね・・・
    ありがとうございます。



    >>もし今使うならこれがいい など個人的な意見で結構ですので、オススメがあれば教えて頂けないでしょうか。
    > 求められている XML 構造を見ないと判断しずらいところもあるのですが:
    >
    > 時には、スキーマに沿った形のクラスを設計して、
    > XMLSerializer あるいは SoapFormatter で変換することもあります。
    >
    > とはいえ SOAP 通信が目的なら、Visual Studio で自動的にプロキシクラスを
    > 生成できるので、WSDL が提供されている場合はそれをそのまま使うことが殆どです。
    > この場合、XML の存在を意識せずに済みます。
    >
    > ただ、SOAP メッセージの内容によっては、自動的に生成されるプロキシクラスでは
    > 対応できないこともあるので、その場合は自前で XML を構築したこともあります。
    >
    > 最近は SOAP ではなく、REST で構築されたサーバーが多いですね。
    >
    >
    > XML データを直接操作する場合については、個人的には
    > XDocument を使うことが多いです。(この方法で XML を扱う場合は
    > C# より VB の方が楽だったりしますが、C# でも大差はありません)

    XML構造によって、どれを使うのがいいかが変わるんですね。
    そのあたりはこれからXML構造を見て、勉強していきたいと思います。
    本当はこちらにXML構造を貼ってしまいたいところですが、事情により公開しづらいので;;

    使えるのであれば、XMLを直接作るよりそのやり方でやりたいですね。
    まずは現状把握から、ですね。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87057  Re[1]: XMLスキーマの使い方について
□投稿者/ WebSurfer -(2018/04/09(Mon) 18:15:15)
    No87055 (MTK さん) に返信

    > C#でxmlを作成してサイトへ送信するプログラムを作成しています。
    > 送信先サイトからxmlスキーマを取得しましたが、これはどのように使用したらいいのでしょうか?

    Web サービス / WCF サービスと C# のクライアントアプリとの間で SOAP でやり取りするという話ですか?
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87066  Re[2]: XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/10(Tue) 13:26:18)
    No87057 (WebSurfer さん) に返信

    回答ありがとうございます。


    > Web サービス / WCF サービスと C# のクライアントアプリとの間で SOAP でやり取りするという話ですか?

    質問頂いた用語をぐぐってみましたが、WCFサービスやSOAPがまだ理解できておらず、今回のものがそれに該当するのか分かっていない状態です。
    今回の仕様書等も見ながらもう少し勉強してみたいと思います。

    今日まで調べて分かったことは、
    ・プログラムでxmlを作成して、指定されたURLに送る必要がある
    ・指定されたURLに送る際には、先方サイトが用意しているライブラリを使って送信が可能
    というところまでです。
    ともあれ、もっと詳しく調べなければいけませんね。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87067  Re[3]: XMLスキーマの使い方について
□投稿者/ WebSurfer -(2018/04/10(Tue) 14:05:02)
    No87066 (MTK さん) に返信

    > 今日まで調べて分かったことは、
    > ・プログラムでxmlを作成して、指定されたURLに送る必要がある
    > ・指定されたURLに送る際には、先方サイトが用意しているライブラリを使って送信が可能
    > というところまでです。

    既存のサービスの API にその仕様に合わせて xml データを作成し送信するということですか? 
    であれば、その仕様の詳細を明確にしていただかないと的を得た答えは出せそうもないです。

    ただ、そのサービスが SOAP を利用した Web サービス / WCF サービスであれば、Visual Studio
    を利用してクライアントアプリを作成する際 [サービス参照の追加] を行うと、クライアント
    アプリと Web サービス / WCF サービスの間をやり取りするためのプロキシクラスを生成して
    くれます。

    それを利用すれば、自分で xml データを作って送信したり、応答として返ってきた xml データ
    をクライアントアプリで使える形にデシリアライズするということは不要です。

    具体的には、以下の記事の「3. Windows クライアントで WCF サービスを利用する」のセクショ
    ンを見てください。

    10 行でズバリ!! [C#] WCF サービスの作成と利用
    https://code.msdn.microsoft.com/windowsdesktop/10-C-WCF-a3831723

    そこに書いてある手順でプロキシクラスを生成すれば、クライアントアプリからは、上記の記事
    にも書いてありますが、

    label1.Content = client.GetData(12345);
    composite = client.GetDataUsingDataContract(composite);

    のようにメソッドを呼び出すだけで、Web サービス / WCF サービスへの接続、xml データの
    シリアライズ / デシリアライズ、データの送受信は全てプロキシクラスがやってくれます。

    その応用で以下のようなことも可能になります。

    WCF サービス経由で非接続型データアクセス
    http://surferonwww.info/BlogEngine/post/2018/03/04/data-access-from-windows-forms-to-wcf-service-using-strongly-typed-dataset.aspx

    ご参考まで。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87076  Re[4]: XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/10(Tue) 17:41:55)
    No87067 (WebSurfer さん) に返信

    > 既存のサービスの API にその仕様に合わせて xml データを作成し送信するということですか? 
    > であれば、その仕様の詳細を明確にしていただかないと的を得た答えは出せそうもないです。

    そうですよね;;
    まずはスキーマとは何でどうすればいいのか でつまずいてしまっており、仕様のところが見えていません(というか、見方が分からないというのが正しいです)
    どうなっていたらSOAP通信と判断できるのか、Web サービス / WCF サービスにあてはまるのか、正直さっぱりわかっておりません。

    xmlを送信する先のURLがiniファイルで用意されており、先方サイトのライブラリに記載してあるメソッドの引数にxmlを指定して送信するようです。
    xmlの仕様書なるエクセルが用意されており、どんな要素がどんなタグ名で示されていて、どんな構造になっているかなどが記載されています。
    それとは別にXML Schemaが用意されています。

    もう少し調べてみたいと思います。


    参考サイトありがとうございます。
    なるほど、SOAP を利用した Web サービス / WCF サービスであれば、xmlを意識せずにできるんですね。
    今回使えそうであれば、是非使ってみたいと思います。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87077  Re[5]: XMLスキーマの使い方について
□投稿者/ なちゃ -(2018/04/10(Tue) 18:00:06)
    たまに、送信するxmlの仕様だけがXMLスキーマで指定されているだけ、というようなサービスなんていうのもあるようです。
    ※特にコンシューマ向けではないサービスの場合など。

    wsdlなどではなく単にスキーマが提示されているだけの場合などは、xmlスキーマに対してxsd.exeというコマンドラインツールを使うことで、読み書き用のソースファイルを自動生成できます。
    ※もしかしたらVisual Studio上から直に起動もできるかもしれませんが

    場合によっては、生成されたソースを若干手直しする必要があるかもしれませんが、大体そのままで活用はできたように思います。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87079  Re[6]: XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/10(Tue) 18:07:31)
    No87077 (なちゃ さん) に返信

    回答ありがとうございます。


    > たまに、送信するxmlの仕様だけがXMLスキーマで指定されているだけ、というようなサービスなんていうのもあるようです。
    > ※特にコンシューマ向けではないサービスの場合など。
    >
    > wsdlなどではなく単にスキーマが提示されているだけの場合などは、xmlスキーマに対してxsd.exeというコマンドラインツールを使うことで、読み書き用のソースファイルを自動生成できます。
    > ※もしかしたらVisual Studio上から直に起動もできるかもしれませんが
    >
    > 場合によっては、生成されたソースを若干手直しする必要があるかもしれませんが、大体そのままで活用はできたように思います。

    XMLの仕様だけは詳細に書いてあるのですが・・・それ以外の、大まかな流れみたいな仕様が見当たらないのです。
    もしかしたら仰っているようなサービスなのかもしれません。

    コマンドラインツールでソースファイルができるんですね!
    それは便利そうです。
    それも調べてみたいと思います。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87083  Re[5]: XMLスキーマの使い方について
□投稿者/ WebSurfer -(2018/04/11(Wed) 10:17:05)
    No87076 (MTK さん) に返信

    > xmlを送信する先のURLがiniファイルで用意されており、先方サイトのライブラリに記載してあるメソッドの引数にxmlを指定して送信するようです。
    > xmlの仕様書なるエクセルが用意されており、どんな要素がどんなタグ名で示されていて、どんな構造になっているかなどが記載されています。

    想像ですが(なのでハズレかもしれませんが)、その「xmlを送信する先」は従来の SOAP を利用した
    Web サービスではないのですか?

    そして、、その「メソッド」は文字列を引数として取る Web サービスのメソッドで、何らかのデータ
    を xml 形式に組み立てて、それを文字列として Web サービスのメソッドに対して送信するということ
    ではないのですか?

    Web サービスのメソッドというのは、具体的な例としては、先に紹介した記事(URL 再掲)のメソッド
    public string GetData(int value) で int value をstring value にしたような感じです。

    10 行でズバリ!! [C#] WCF サービスの作成と利用
    https://code.msdn.microsoft.com/windowsdesktop/10-C-WCF-a3831723

    その可能性を調べてみてはいかがですか?

    調べてもわからなければ、試しに「送信する先のURL」を使って、上に紹介した記事の「3. Windows
    クライアントで WCF サービスを利用する」を参考に Visual Studio で [サービス参照の追加] をトラ
    イしてみてはいかがですか。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87086  Re[6]: XMLスキーマの使い方について
□投稿者/ なちゃ -(2018/04/11(Wed) 10:51:47)
    一応推測で述べておくと、ライブラリとしてxmlを引数で受けるメソッドが提供されているとのことから、おそらくはwsdlとかで仕様を公開してるタイプのサービスではないだろうと思います。
    もちろん確認してみることを否定するものではありません。

    ※何でそう思うかというと、某サービスでB2B向けに実際にそういう形態のサービスがあって、呼び出しのコードをサンプル実装した経験があるからです。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87112  Re[7]: XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/12(Thu) 11:38:02)
    No87086 (なちゃ さん) に返信


    > 一応推測で述べておくと、ライブラリとしてxmlを引数で受けるメソッドが提供されているとのことから、おそらくはwsdlとかで仕様を公開してるタイプのサービスではないだろうと思います。
    > もちろん確認してみることを否定するものではありません。
    >
    > ※何でそう思うかというと、某サービスでB2B向けに実際にそういう形態のサービスがあって、呼び出しのコードをサンプル実装した経験があるからです。

    検証の結果、恐らく仰る通りではないかと思います。
    教えて頂いたコマンドラインツールを使ってみましたが、ソースファイルを自動生成しようとしてエラーが凄い出てしまっている状態です。
    十中八九、使い方が悪いのかと思われます^^;
    もう少し調べながら、色々試していこうと思います。
    ありがとうございました。
記事No.87055 のレス / END /過去ログ149より / 関連記事表示
削除チェック/

■87111  Re[6]: XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/12(Thu) 11:33:57)
    No87083 (WebSurfer さん) に返信


    > 調べてもわからなければ、試しに「送信する先のURL」を使って、上に紹介した記事の「3. Windows
    > クライアントで WCF サービスを利用する」を参考に Visual Studio で [サービス参照の追加] をトラ
    > イしてみてはいかがですか。

    ご指摘の通り、掲載頂いたURLを元にトライしてみました。
    『図 7. [サービス参照の追加] ダイアログ』の画面まで行き接続先のURLでやってみたのですが、残念ながら対応していないようでした。
    となるとXMLを自分で作る必要がありそうですね。
    それが分かったことだけでも収穫がありました。
    ありがとうございました。




    > ■No87076 (MTK さん) に返信
    >
    >>xmlを送信する先のURLがiniファイルで用意されており、先方サイトのライブラリに記載してあるメソッドの引数にxmlを指定して送信するようです。
    >>xmlの仕様書なるエクセルが用意されており、どんな要素がどんなタグ名で示されていて、どんな構造になっているかなどが記載されています。
    >
    > 想像ですが(なのでハズレかもしれませんが)、その「xmlを送信する先」は従来の SOAP を利用した
    > Web サービスではないのですか?
    >
    > そして、、その「メソッド」は文字列を引数として取る Web サービスのメソッドで、何らかのデータ
    > を xml 形式に組み立てて、それを文字列として Web サービスのメソッドに対して送信するということ
    > ではないのですか?
    >
    > Web サービスのメソッドというのは、具体的な例としては、先に紹介した記事(URL 再掲)のメソッド
    > public string GetData(int value) で int value をstring value にしたような感じです。
    >
    > 10 行でズバリ!! [C#] WCF サービスの作成と利用
    > https://code.msdn.microsoft.com/windowsdesktop/10-C-WCF-a3831723
    >
    > その可能性を調べてみてはいかがですか?
    >
    > 調べてもわからなければ、試しに「送信する先のURL」を使って、上に紹介した記事の「3. Windows
    > クライアントで WCF サービスを利用する」を参考に Visual Studio で [サービス参照の追加] をトラ
    > イしてみてはいかがですか。
記事No.87055 のレス /過去ログ149より / 関連記事表示
削除チェック/

■87116  Re[7]: XMLスキーマの使い方について
□投稿者/ WebSurfer -(2018/04/12(Thu) 12:39:07)
    No87111 (MTK さん) に返信

    >>調べてもわからなければ、試しに「送信する先のURL」を使って、上に紹介した記事の「3. Windows
    >>クライアントで WCF サービスを利用する」を参考に Visual Studio で [サービス参照の追加] をトラ
    >>イしてみてはいかがですか。
    >
    > ご指摘の通り、掲載頂いたURLを元にトライしてみました。
    > 『図 7. [サービス参照の追加] ダイアログ』の画面まで行き接続先のURLでやってみたのですが、残念ながら対応していないようでした。
    > となるとXMLを自分で作る必要がありそうですね。

    私の想像が当たっていたとしても、送信するための xml 形式の文字列は自力で作らざるを得ないと思います。

    Web サイトに接続しして、送信し、返ってきた応答を受け取るというところはプロキシクラスが面倒を見てくれるの
    で、想像が当たっていたとすると、そこのところを自力でコードを書いて実装する必要がなくなるという違いがある
    とは思いますが。

記事No.87055 のレス / END /過去ログ149より / 関連記事表示
削除チェック/

■87117  Re[8]: XMLスキーマの使い方について
□投稿者/ MTK -(2018/04/12(Thu) 14:34:13)
    2018/04/12(Thu) 14:34:55 編集(投稿者)

    No87116 (WebSurfer さん) に返信


    > 私の想像が当たっていたとしても、送信するための xml 形式の文字列は自力で作らざるを得ないと思います。
    >
    > Web サイトに接続しして、送信し、返ってきた応答を受け取るというところはプロキシクラスが面倒を見てくれるの
    > で、想像が当たっていたとすると、そこのところを自力でコードを書いて実装する必要がなくなるという違いがある
    > とは思いますが。

    XMLはどちらにせよ、自力で作らなければいけないんですね。
    てっきりXMLを1から作らなくても、テンプレートみたいなものが先方サイトから貰えるのかと勘違いしていました。
    送受信などをプロキシクラスが見てくれるだけでも助かります。
    ありがとうございます。
記事No.87055 のレス / END /過去ログ149より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -