1

データをXMLファイルに保存するプログラムを作成しています。-XMLを作成する場合、コメントを次のように終了したり、属性内に<!-- comment --->追加したりするなど、微妙な間違いを犯す可能性があります。</>当然、XMLは引き続き問題なく読み取ることができますが、このテキストをXmlDocumentに入力しようとすると、構文エラーが発生します(解析されません)。

XmlDocumentの厳格さを緩和し、ドキュメントを解析不能にしない標準の違反を無視する方法はありますか?たとえば、標準仕様に反する最後<!-- comment --->に含まれているにもかかわらず、それはまだコメントであることが明らかです)。-

4

2 に答える 2

6

いいえ、それは良いことです。

XMLは厳密な形式です。ここでの解決策は、正しい(修正された)入力を行うことです。

すべてのXMLツールは、設計上、非常に扱いにくいものです。XMLReeaderを使用して、障害のある要素を修正または拒否することで、運が良かったかもしれません。

ただし、適切なツールを使用してXMLを作成することをお勧めします。それらのかなりの数はXmlPadという名前です

于 2012-04-16T11:26:06.173 に答える
1

いいえ、XMLパーサーは有効なXMLではない入力を拒否することが期待されています。

Tidyによって無効なファイルを前処理する運を試すことができますが、入力が有効であることを確認する方がよいでしょう。

使用例を次に示します。Tidyはあなたのコメントを修正し、いくつかのエスケープを行いますが、余分な開口部<は、多くの場合、物事を壊します-その場合の推測は、単に尋ねるには多すぎます。

Tidy tidy = new Tidy();
tidy.Options.FixComments = true;
tidy.Options.XmlTags = true;
tidy.Options.XmlOut = true;

string invalid = "<root>< <!--comment--->></root>";
MemoryStream input = new MemoryStream(Encoding.UTF8.GetBytes(invalid));
MemoryStream output = new MemoryStream();
tidy.Parse(input, output, new TidyMessageCollection());
// TODO check the messages

string repaired = Encoding.UTF8.GetString(output.ToArray());
于 2012-04-16T11:32:46.377 に答える