質問

検証エラーに関するより有用な情報を取得する方法はありますか? XmlSchemaExceptionは、行番号とエラーの位置を提供しますが、これは私にはほとんど意味がありません。結局のところ、XMLドキュメントは一時的なテキスト表現に関するものではありません。間違ったときにノード名(またはxpath)を指定して列挙されたエラー(またはエラーコード)を取得し、問題の原因を突き止めて、おそらくそれを試して修正できるようにします。

編集:私は有効なxmlドキュメントについて話している-特定のスキーマに対しては無効だ!

役に立ちましたか?

解決

XmlReaderSettingsにスキーマが含まれるXmlReaderをセットアップし、それを使用してノードごとに入力ストリームを読み取ることで、これを実現できます。最後に読み取られたノードを追跡し、検証エラーが発生したときにドキュメント内のどこにいるかをかなりよく把握できます。

この演習を試してみると、エラーノードの概念があまり意味をなさない、多くの検証エラー(必須要素の欠落など)があることに気付くと思います。はい、その場合、親要素は明らかにエラーの原因ですが、実際にエラーを引き起こしたのは、リーダーが必要な要素を見ずに終了タグに遭遇したためです。 p>

他のヒント

私の経験では、幸運にも行番号と解析位置を取得できます。

DTDを介した検証を検討することもできます。DTDを使用すると、多少興味深いエラーが発生する場合がありますが、現在取り組んでいるプロジェクトでは、XSLTを使用して検証します。トランスフォームは構文をチェックし、出力されたトランスフォームテキストとしてエラーを報告します。よりわかりやすいエラーチェックが必要な場合は、このルートを検討します。私たちにとって、空の出力はエラーがないことを意味しています。

個人的に、より詳細なエラーを取得する方法がわかりません。通常、ドキュメントを開いて、記載されている場所に移動すると、エラーを簡単に見つけることができます。

コードがファイルを有効なXMLとして解析できない場合、XPATHまたはその他の名前付きXMLの詳細を提供するのは非常に困難です。

これは簡単な作業ではないようです。ロバート・ロスニーの答えは私の問題をプログラムで解決することに最も近いので、今のところそれを受け入れます。 xslソリューションを引き続き使用します。検証エラーを解決するより良い方法を見つけた人は誰でもこのスレッドに応答できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top