私が取り組んでいるアプリケーションには、クエリのためにメモリにロードする必要がある XML ドキュメントがあります。これを行うために、正常に動作している を呼び出しXmlDocument.Load(string path)
ています。しかし、最近、メソッドで奇妙な動作に遭遇しました。
次のような生成されたファイルがあります (機密データを削除するために編集されています)。
*Snip*
<Info name="name2" parent="name1" modifier="A"/>
<Info name="name2" parent="name1" modifier="B"/>
<Info name="name1" modifier="A"/>
<Info name="name1" modifier="B"/>
<Info name="name3" parent="name2" modifier="A"/>
<Info name="name3" parent="name2" modifier="B"/>
*Snip*
上記の 6 つのエントリがあります。ただし、 を呼び出すとXmlDocument.Load
、4 つのエントリのみがロードされ、最初の 2 つのエントリは除外されます。ブレークポイントを使用してこれを確認し、データ デバッガーを調べました。
ただし、ドキュメント内のデータを手動で再配置すると、
*Snip*
<Info name="name1" modifier="A"/>
<Info name="name1" modifier="B"/>
<Info name="name2" parent="name1" modifier="A"/>
<Info name="name2" parent="name1" modifier="B"/>
<Info name="name3" parent="name2" modifier="A"/>
<Info name="name3" parent="name2" modifier="B"/>
*Snip*
すべてのデータが正しくロードされ、どの要素も取り残されていません。私が知る限り、ドキュメントは整形式で、読み込み時にスローされる例外はありません。また、すべてのエントリに人為的にparent
属性を追加すると、それらはすべて正しく読み込まれますが、XML を正しく理解していれば、それは問題ではなく、コード内の欠落している属性を無効にするだけであることに注意してください。また、どの要素にも名前空間が指定されていません。
これは予想される動作ですか、それとも何か不足していますか? 必要に応じて詳細をお知らせします。