1

.NET で解析しようとしている少し悪い XML があります。この同じ XML ファイルは、他のパーサーで使用できます。つまり、パーサーはユーザー エラーに対してより寛容です。

XML は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<kml>
<Document id="12345">
  <name>My name</name>
  <description>My Description</description>
  <myns:author>
    <myns:name>My Name</myns:name>
  </myns:author>
</Document>
</kml>

私は次のようにロードします:

XmlDocument doc = new XmlDocument();
doc.Load(myFilePath);

この 2 行目は、正当に例外をスローします。

'myns' is an undeclared prefix. Line 6, position 4.

アプリケーションの観点から見ると、私たちは主に、このわずかに間違った XML ファイルを処理できる別のアプリケーションへの導管として機能しています。このサードパーティ アプリケーションが処理できるこの XML を拒否したくありません。

.NET XML パーサーの厳密性を無効にするか変更する方法はありますか?

4

3 に答える 3

2

驚くべきことに、以前の答えはすべて間違っています。

ドキュメントは整形式の XML ですが、名前空間が整形式の XML ではありません。これは、XML の推奨事項には準拠していますが、XML の名前空間の推奨事項には準拠していないことを意味します。これは、名前空間の処理をオフにできるパーサーを見つけることができれば、それを解析できることを意味します。Microsoft XML パーサーにそのようなオプションがあるかどうかはわかりませんが、ここにはありません。

http://msdn.microsoft.com/en-US/library/9khb6435(v=vs.80).aspx

于 2013-05-03T20:40:35.683 に答える