VB.NETとVC.NET(MFC)で互換のXMLパーサ

このQ&Aのポイント
  • WinXP Embbeded上で動作する一種の制御ソフトを開発する際に、VB.NETとVC.NET(MFC)を使用して互換性のあるXMLパーサを選択する方法について教えてください。
  • VBソフトとVCソフトの間でパラメータや設定をやり取りするために、共通のファイルを使用したい場合、どのXMLパーサが適しているでしょうか?
  • 制御ソフトの開発において、XML以外の普遍的な方法でパラメータや設定をやり取りする方法があれば、教えてください。
回答を見る
  • ベストアンサー

VB.NETとVC.NET(MFC)で互換のXMLパーサ

WinXP Embbeded上で動作する一種の制御ソフトを 開発しないといけないのですが、 本体制御ソフトをVCで、ユーザIF(GUI)をVBで作ることにしています。 パラメータ等の設定をGUIと本体ソフトで遣り取りしないといけません。 VBソフトとVCソフトのそれぞれに互換のシリアライザ の様なものを実装して、共通のファイルを互いに 読み書きすることを考えています。 GUIは極力標準的かつ平凡なソフトにしたいので .NET Framework以外のライブラリを使うのは避け、XmlSerializerあたりを使うと良いのかと思いますが、VC(MFC)はXmlSerializerが吐き出したXMLファイルを 読めるパーサは何を選べば良いのでしょうか? XMLに拘っている訳ではないのですが、言語に 依存しない最も普遍的な方法ではないかと思っています。 XML以外で良い方法があればそれも良しです。

  • XML
  • 回答数3
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • nanimania
  • ベストアンサー率36% (34/93)
回答No.2

#1です。 XmlSerializerは、クラスの内容をそのままファイルに書き出すクラスです。 ですので、VCとVBで同じ構造のクラスをイメージすれば、すんなり行くような気がします。 >パラメータ変更の頻度が多い というのは、XMLのタグの名前が変わったり、タグ自体を追加するということですか? パラメータ変更の対応を考えると、 XmlSerializerの場合はクラスの構造が変わることになり、DOMの場合、プログラム内部はファイルの読み方が変わることになると思います。

hankakueisuji
質問者

お礼

アドバイス有難う御座います。 そうです、クラスの構造が変わったり、新たなクラスが出来ることもあるということです。 .NETのXmlSerializerと使い勝手が近くてMFCで使えるDOMライブラリとかあれば良いかと思ったわけです。 色々考えると.NET-MFC互換のDLLかコンポーネントを作る方が分かり易いかもしれませんね。

その他の回答 (2)

  • nanimania
  • ベストアンサー率36% (34/93)
回答No.3

#1,2です。 クラスの構造が変わるのであれば、 DLLにしたほうが対応が簡単になると思います。 DLLでVCとVBの両方でクラスの変化に対応する必要がなくなりますし。

  • nanimania
  • ベストアンサー率36% (34/93)
回答No.1

VB.Netでシリアライズ/デシリアライズを行うようなDLLを作成し、それをVC/VB両方で呼ぶようにしたら良いかと思います。 VCの側で使いやすいように加工するのも、DLLで出来そうな気がします。

hankakueisuji
質問者

お礼

早速の回答有難う御座います。 その方法も検討に加えることにします。 ただ.Net側でXmlSerializerが吐き出したXMLファイルを、MFC側で汎用的なDOMパーサ(MSXMLとか?)で読む方法があるのではないかと思った訳ですが、専用のシリアライザを作るのとどちらが簡単というか保守性のよいソフトになるのでしょうか? パラメータ変更の頻度が多いので変更容易性は重要です。

関連するQ&A

  • VB.NETでXMLのデータをやり取りする方法

    VB.NET 2003を使用して、Windowsソフトを開発しています。 データの保存にXMLを使用したいのですが、読み出せるのですが書き込めません。 どのような方法でもいいので、既存XMLファイルにデータを追加する方法をご教授願えませんか? また、ご存知であればでよいのですが、VB.NETでWindowsソフト開発で、XMLに関する解説が詳しく掲載されているサイトはありませんか?

  • VB/VCランタイムについて

    ファイル名一括変換というフリーソフトを使おうとしたら "Component 'MSCOMCTL.OCX' or one of its dependencies not correctly registered: a file is missing or invalid" と出てきて起動しませんでした。 検索したらMSCOMCTL.OCXが無いから、Vectorサイトから『XTRM Runtime』でVB/VCランタイムをまとめてインストールしたら良いと書いてありました。 しかし私のパソコンにはVB/VCランタイムでインストールされているものがすでにいくつかあるようです。 『XTRM Runtime』ですでにインストールされているVB/VCランタイムをまたインストールみたいになったら何か問題は起きますか? Windows10 64bitです。宜しくお願いします。

  • VC++6.0とVB6.0の開発方法

    どうかよろしくお願いします。 早速ですが私は今大学院生であり、大学院を中退してしまった先輩の開発したアプリケーションを改造したいと考えています。しかし、そのアプリに関して説明書が無く、自分でソースコードを解読し、改造しなければなりません。 アプリは起動するとエクスプローラのような画面になり、フォルダを選択してその中のファイルの設定項目に数値を入力し、メニューバーから「実行開始」を選択すると、ある現象のシミュレーション結果を出力する、といったソフトです。 その先輩はVisual Studio 6.0を用いて、VC++6.0とVB6.0で開発しており、(多分)全てのソースコードは残っています。たまにバグが出ますが、アプリもちゃんと動きます。 私は、こういったソフト開発はVisual Studio .NET 2002を用いてVC++.netでダイアログベースのMFCアプリケーションを作ったことならあるのですが、Visual Studio 6.0は使ったことが無く、VC++6.0とVB6.0の異なる言語でひとつのアプリを作ったことは未経験です。 現在、ソースコードと格闘中ですが、.NET 2002で開発したときの拡張子slnファイルが拡張子dswに該当するということと、おそらく先輩はアルゴリズム計算部分はVCで書いて、GUIの方はVBで書いたということくらいしか分かっていません。また、アプリのソースコードが入っているフォルダには[bin][src][include][lib][vb]といったフォルダがあり、[src]の下層にはまたソースコードが大量に入ったフォルダがあり、[bin]にはバイナリファイル、実行exeファイルが大量に入っています。[vb]にはVBで記述されたソースらしきものが入っています。 以上が背景なのですが、ソフトに詳しい方に幾つか質問させてください。 (1)このソフトを改造したいとすれば、具体的にどういう手順で改造すればよいですか? (2)VCの方はdswファイルについてビルドすればコンパイルされ、[bin]にexeが出来る?のですが、VBの方はコンパイル出来ません。なぜでしょうか? (3)このような異なる大量なexeファイルを、ひとつのアプリケーションとして構築するのはどうすれば良いのですか?これらのexeファイルは一つ一つがモジュール?であり、それらを結合する…といった理解でいいのでしょうか? (4)このVisual Studio 6.0で作られたソースを、現在フリーでダウンロードできるVisual Studio 2008 Express Editionに移行して改造することは、容易にできるでしょうか? 他にもたくさん疑問はあるのですが、とりあえず以上4つの疑問にお答え頂ける方がおりましたらご教授下さい。

  • Windowsアプリ、VBとVCどっちで開発?

    初めまして。グフと申します。 WindowsのGUIアプリケーション(デスクトップアプリ) の作成について質問があります。 Windowsのソフト開発環境の選択肢としてVB, VC, C# というものがあるようですが、C++経験者がWindows ソフトの開発にとりかかるのに、もっともとっつき やすく、開発生産性の高いツールはどれになるので しょうか? 新たにVBやC#の言語仕様を覚えるより、C++の知識 そのままが活かせるのであれば、強みづたいという ことでVCが良いのかなと感じてはいます。 ただ、現状のVBの隆盛や今後の.NETの事を考えると 今までのC++の経験はさておき、VBやC#で開発する 方がよいのかなとも悩んでおります。 現場で実際にツールをお使いの方々に、開発言語の 選択について、参考ご意見をいただければと思い、 投稿させて頂きました。 ちなみに私はこれまで、UNIX系のソフト(CUI, サーバーアプリ)をC++を使って開発してきました。 Windows系の開発経験は全くありません。 何卒、ご意見をよろしくお願いいたします。

  • VC++のDLLをVB6.0からVB.NETへ移行する方法

    はじめて投稿します。 今、現状VB6.0のプログラムで使用しているVC++のDLLを VB.NETで使用できるように、VB.NETのソースの改修をしています。 (開発環境は、VisualStudio.NET 2003) たいていのDLLは、DllImportを行うことで VB.NETから使用できることを確認しました。 /*--(例)------------------------------------------*/ Imports System.Runtime.InteropServices <DllImport("DLLTest.dll")> _ Private Shared Function DLLTestMethod() As Integer End Function /*------------------------------------------------*/ しかし、苦戦しているDLLファイルがあって、 そのソースを見ると、COMで実装されているようで、 コンパイルしたらタイプライブラリファイルが作成されています。 またDLLのレジストリも登録されているようです。 VB6.0でどう使われているか確認したところ、 そのDLLの参照設定をしていて、 "Public obj As New クラス名"でクラス宣言した後、 obj.関数名()で処理を行っています。 VB.NETでいろいろ試行錯誤してみましたが 参照設定はできるものの、その後で手詰まりになっています。 (参照設定しても、灰色になっているクラス名が存在するので 正しく設定できているかも怪しい状態) (1)----------------------------------------------- 参照設定後、オブジェクトブラウザから見えるクラスをNewして そのメンバ関数を使用する方法 -------------------------------------------------- (結果) レジストリ登録をしていないと 「CLSID{・・・}のCOMオブジェクトが有効でない」云々というエラーに。 それを受けて手動で該当するDLLのレジストリ登録を行った後だと 「オブジェクト参照がオブジェクトインスタンスに設定されません」というエラー。 (ということは、クラス生成に失敗している?) (2)----------------------------------------------- 上記のようにDllImportで実装する方法 (ちなみにそのDLLがエクスポートしている関数は DllCanUnloadNow, DllGetClassObject, DllRegisterServer, DllUnregisterServerの4つ) -------------------------------------------------- (結果) DllGetClassObject以外については関数を呼ぶことができている。 DllGetClassObjectは、引数設定に苦戦して今のところうまくいっていない状態。 (3)----------------------------------------------- インスタンス生成ができていないようなので どこかで調べて見つけてきたCoCreateInstance関数を使用する方法 -------------------------------------------------- (結果) これも引数に何を渡してよいかわからず試行錯誤中。 DLLの読み込みの時点でこけているかと予測して そのあたりが解決すればよいのかな・・・といろいろ試していますが WindowsプログラミングやCOMがよくわかっていないので 何が正解で何が間違っているのかさっぱりわからず、 周りに聞いても精通している人がいないためどうしようもなくなっています。 どんな些細な手がかりでもよいので 突破口になりそうなアドバイスがあれば教えてください。 よろしくお願いします。

  • GUIアプリケーション

    MSのGUIアプリ(とくsにサウンド)を作りたいです。 できるだけ軽いのとMP3プレイヤーになるのが必須で VC++,VB,なでしこ,ひまわり 以外で おすすめな GUIアプリケーションの プログラム言語を教えてください。

  • VB2008 オブジェクトプロパティの保存方法

    VBの超初心者です。 早速質問ですが フォーム上に複数のチェックボックスやテキストがあり、そのプロパティ(checkedやtext)を保存し、 またその保存したファイルをフォーム上で開けることができるようにしたいのですが、 何をどうしたらいいのかわかりません。 方法としては↓に書かれているような方法であっているのでしょうか? http://dobon.net/vb/dotnet/file/xmlserializer.html ↑に書かれているMainClass.Main()を動かせば"C:\test\sample.xml"ができるのか? と、やってみたのですがDim serializer・・・のところでエラー ”System.InvalidOperationException はハンドルされませんでした。” となってしまいます。 そもそもの方法があっているのかどうかもわからず困惑中です。 どなたか、わかる方がいれば、参考ページでも結構ですので教えてください。 宜しく御願いします。

  • バイナリ形式のXMLファイルを読み書きしたいです

    Denemoというソフトが出力した .denemo ファイルを読み書きしたいのです。 .denemo ファイルは MusicXML という形式のようなのですが、バイナリファイルなのでどのように扱えば良いのかわからず質問しました。 XML parser というものが関係あるようなのですが、よくわかりません。 まずは、バイナリ形式のXMLをテキスト形式で読みたい。 次に、バイナリ形式のXMLをプログラム(C++)で操作して読み書きしたい。 と、思っています。 OS は Windows XP で、コンパイラは g++ を使用しています。 よろしくお願いいたします_(_ _)_

  • VB系のみの開発にC言語の追加

    今までAccess(業務ソフト作成レベル)/VB(個人ツール作成程度)/VB.NET(少し触った程度)をやってきたのですが、C言語も勉強しておかないといけないと思い、 早速VC#とVC++の入門書を買ってきました。(違いがわからなかったので^^;) パラパラと見た程度なのですが、書き方はVC#の方がマイクロソフト独特の書き方で自分的には解りやすいのですが、 ハードウェア制御やDLL作成となればVC++の方が優位の様な事をWebで書いてありました。 ・今の自分にとって可読性の高いVC#を勉強してからVC++に移行するのが良いのでしょうか? ・VC#にもDLL作成出来る様なのですがVC++で作成したDLLとの違いはあるのでしょうか? 以上2点質問させて下さい。 よろしくお願い致します。

  • Visual C# について教えてください

    今まで、VB を使って Windows アプリを作ってきました。VB 歴は 10 年弱で、RS-232C 経由で測定機器を制御する Windows アプリなどを多数書いてきました。 先日 ANSI C の研修を受け、コマンドプロンプトで動くプログラムなら、C 言語でもある程度のものが書けるようになりました。これを機に、開発環境を VB から C ベースのものに移そうと考えています。 最近 VC# という言語がありますよね? 本屋でパラパラと見たところ、VC# は VB と似た環境で Windows アプリの開発ができそうで、その詳細を知りたくなりました。 現在、VC++ をはじめるか、VC# をはじめるか、悩んでおります。 質問は以下の3点です。 ・VC# で、EXE ファイル単体で動く Windows アプリが作れるのでしょうか? ・本やネットなどで、VC++ のサンプルソースは多く見かけますが、VC# のソースはあまり見かけません。これは開発を行う上で不利になりますか? VC# は VC++ のサンプルソースをほとんど流用できるのでしょうか? ・総合的に判断して、私には VC++ と VC# のどちらが適当だと思いますか? 個人的な判断で構いません。 以上、宜しくお願いいたします。

専門家に質問してみよう