投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/5/29 03:22:56
再々度の指摘になりますが、下記の点の徹底をお願いします。
 ・質問前に、ご自身の使っている VB のバージョンを明らかにしましょう。
 ・どのような XML を、どのようなコードで読み取った時に、どういう問題が出たのかを書きましょう。

話の前後関係から、(VB6 ではなく)VB.NET 系ということは推理できたのですが、それでも
VB.NET2002/2003 と VB2005 と VB2008/2010 とでは、利用可能な選択の幅が異なってきますので。

この手の質問と回答では、具体的なサンプルコードを交えて話した方が手っ取り早いと
思うのですが、残念ながら質問内容に具体的な事があまり書かれていないので、
こちらとしても、ピンポイントの情報を提供することが難しい状況です。
ご自身の状況をできる限り説明できるよう、質問の仕方を工夫してみてください。


> 日本語の要素を読み込もとうした場合にエラーが起きてしまいます。
要素の名前や要素の中身が日本語であろうとなかろうと、処理手順に差は生じないはずですが、
具体的な情報 (ファイル内容、コード、エラー箇所、エラーの内容等) が一切提供されていないので、
回答側としては、どこが間違っているのか、その箇所を指摘することすらできません…。

なので予想で答えますが、もしかして、元の XML の内容自体が間違っているのでは無いでしょうか。

よほど特殊な XML (ワンセグで使われる BML など)を除いては、XML で扱われる文字コードは、
基本的に Unicode 系のエンコーディングを前提としています。Unicode 以外も選択できますが、
XML で利用可能な文字コードは限られていますし、Unicode 以外(Shift_JIS など)を採用する場合は、
xml 宣言にて encoding を指定する必要があります。もちろん、encoding で UTF-8 を指定しておきながら、
実際のエンコーディングが Shift_JIS だったりするのも NG ですが…そういった点は大丈夫でしょうか?

XML 自体に間違いが無いのだとすれば、コード側に問題があるのだと思います。
残念ながらその問題点がどこであるのかは、具体的な情報を提示してもらわないと指摘できませんが。


> DataSetからの読み込み
DataSet および シリアライズ/デシリアライズ という方式については、用途が限定されているので、
とりあえず現段階では忘れてしまってもかまいません。

一応ざっくり説明しておくと、それらは元々 XML 用ではなく、
 ・DataSet … 主にデータベース操作に使われる物。主に表形式のデータを管理する仕組み。
 ・シリアライズ … 自分で作ったクラスの内容を、ファイル等に保存するための仕組み。
 ・デシリアライズ … シリアライズされたデータを、オブジェクトに復元するための仕組み。
となっています。
たまたま、その保存形式の一つとして XML 形式を選択できるというだけであって、
XML の読み書きを主題とした方法というわけではありません。


XML の操作については、基本的には、DOM(ドキュメント オブジェクト モデル)と呼ばれる、
XML の階層構造をたどる方式を使うのが一般的かと思います。
この方法では、先述した XmlDocument クラスを使うことになります。
これはその名前通り、XML 文書の操作を主目的としたクラスなので、細かい XML 操作が可能です。

そして VB2008 以降では、XDocument というクラスを用いて、より直接的な読み込みが可能です。
VB2008 では、VB 自体に言語レベルで XML のサポートが組み込まれているのですが、
その基礎となるのが XDocument クラスです(先の、<foo> を読み取る短いサンプルがコレです)。

XmlDocument と XDocument とではできる範囲に差があるので、現段階ではどちらを採用すべきかを
提示することは難しいのですが、直観的にあつかるのは XDocument の方でしょうかね。

# XmlDocument や XDocument では、階層が深い場合などに便利な「XPath式」と呼ばれる構文も
# サポートしているのですが、こちらは構文が少々特殊なので、今回は説明を省きます。


> 序文からよく意味がわかりませんし
それは、現時点では仕方のないところだとは思います。

まずは各行の意味をひとつひとつ読み取ろうとするよりは、チュートリアル系のページを見ながら、
サンプルコードを真似る事から始めるのが早道かと思いますよ。サンプルを真似て try & error で
試すだけならば、それほど難しい話では無いでしょうし。

MSDN は基本、仕様書/説明書の類であって、初心者向けの資料ではありませんので、文章の
1行1行をつぶさに読み解こうとすれば、そこにはある程度以上の基礎知識が要求されます
――数学を学ぶ前に算数の知識が必要であるかのように。

一方、ある程度の知識は身につけていて、それでも序文から分からない箇所に当たっている状況なら、
序文のどの部分が分からなかったのかを書いていただければ、何について学ぶべきかを指摘したり、
用語の意味を追加解説するといったお手伝いはできるかと思います。