- PR -

C# スキーマ 検証

1
投稿者投稿内容
清水の次郎長
会議室デビュー日: 2007/02/24
投稿数: 3
投稿日時: 2007-02-25 00:28
よろしくお願いします。

xml を XML Schema(XSD)で検証するプログラムを作成しています。
msdn(http://msdn2.microsoft.com/ja-jp/library/as3tta56(VS.80).aspx)
を参考に作成しました。
問題があればエラーが表示されるのですが,1つエラーが発見されるとそれ以降のエラーがでません。下記の機能を追記したいと考えていますが,どのように実装すれ良いか,
アドバイスお願いします。
(1)xmlファイル全てのエラーを表示したい。
(2)そのエラーに対応するxsdの箇所も表示したい。

よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-25 11:40
 「それ以降のエラー」は、アテにならないからでしょう。

 C# ということですが、たとえば System.IO を使用せずに FileStream にアクセスすると、すべての行でエラーが出ます。しかし、すべてのエラーは、エラーになっている行を直すのではなく、ファイルの先頭で using を追加してやれば解決できます。

 同じようなことが、XML の文法でも言えます。最初のエラーを直すと、後続のエラーはすべて消えるかもしれません。あるいは、他のエラーが出てくるかもしれません。

 よって、「それ以降のエラー」は、アテにならないと思います。
_________________
清水の次郎長
会議室デビュー日: 2007/02/24
投稿数: 3
投稿日時: 2007-02-25 21:35
回答ありがとうございます。

>「それ以降のエラー」は、アテにならないからでしょう。
なるほど,参考になります。

例えばですが,
下記のコードは実際にはうまく動作しませんが,下記のような感じで最後まで読みこませ,エラーがあればその都度書き出す方法はないでしょうか?
(例:<aaa>bbb</aaa>のXMLでbbbの部分をXMLスキーマで必須にしておき,<aaa></aaa>とXMLを記載すると読み込み内容がずれてうまくいきません。)

ヒントになるようなことでも結構ですので宜しくお願いします。
-----
while (reader.Read());の部分を
while(!reader.EOF)
{
try
{
reader.Read();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
-----
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-26 07:48
ごめんなさい、よくわからなかった

構造ではなく、データのエラーであれば、最後まで読めるでしょ、ということ?
_________________
1

スキルアップ/キャリアアップ(JOB@IT)