こんにちは、これはbool TryParse(string text, out XDocument document)
メソッドをXDocument
クラスに追加するためのサポートを要求するためのRFCの問題です。
リポジトリを検索しましたが、関連するものが見つからないため、これが重複している場合は、遠慮なく閉じてください。
_untrusted_ソースからのXMLファイルを操作する必要があり、ファイルが実際に整形式のXMLであることを確認する必要がある場合があります。
現在、文字列が例外処理を含む整形式のXMLであることを確認するためのあまり良い方法はありません。
提案された方法はどれも、非常に一般的な問題(少なくともIMO)に対するクリーンな解決策のようには見えません。
Parse(string source)
メソッドを公開する他のBCLクラスも通常bool TryParse(string source, out...)
を公開するため、 TryParse
メソッドを追加すると、 XDocument
クラスの一貫性がいくらか高くなることにも注意してください。他のBCLクラス。
次のメソッドを追加します
bool TryParse(string text, out XDocument document)
XDocument
およびXElement
クラスへ
XmlDocument
クラスと同等の機能が必要ですか?
実際、 XmlDocument
はLoadXml(string xml)
XmlDocument
公開しているので、 bool TryLoadXml(string xml, out XmlDocument document)
追加できますが、私はその名前が本当に好きではないので、機能のパリティが必須でない場合は、それを追加します。
これを確認しましたが、この場合にTryParseメソッドを追加することの価値を完全には理解していません。 他のBCLタイプとの整合性はやや興味深いものですが、それらの多くを解析している可能性があり、パフォーマンスの問題があるため、これらの場合にははるかに便利です。 この場合、XMLドキュメント全体を解析するコストと比較して例外コストが小さいため、パフォーマンスは実際には問題になりません。 また、Parseメソッドを使用すると、エラー時にXmlExceptionが発生します。これにより、TryParseの場合には発生しない解析エラーを示す追加情報が得られます。
同様のケースでは、Roslyn APIはCSファイルを解析するTryParseメソッドを提供しません。これは、通常、エラーに関するコンテキストを増やす必要があるためですが、XMLドキュメントの解析には行き過ぎかもしれません。そのため、基本情報の中間点があります。 XmlException。
問題を作成してくれてありがとう。しかし、これらの理由から、これらにTryParseメソッドを追加することにあまり価値はないと思います。
@weshaggard 、
別に利便性から、 TryParse
方法は、DEVは、オーバーヘッドのtry / catchブロックに関連付けられているとのインスタンス化は、非必要なスキップできるようになるXmlException
彼/彼女がしても気にしないことがあります。
私もそのような方法が存在しないことを知って非常に驚きました。 :|
個人的には、 @ weshaggardの答えは意味がありません。 .NETを半年以上使用しているImoはすべて、@ weshaggardの投稿の最初の部分の説明を完全に認識しています。 エラーを詳細に処理せず、気にしないことが、少なくとも過去20年間の私にとって、主な理由は、クラスが提供する場合、TryParse()バリアントを使用することです。
それについてのstackoverflowの投稿を見た後、過去X年間にすでに多くのpplがここに来て、「ああ、XDocumentにTryParse()は本当にありません。奇妙です」のようになっていると思います。
しかし、...何でも。
最も参考になるコメント
@weshaggard 、
別に利便性から、
TryParse
方法は、DEVは、オーバーヘッドのtry / catchブロックに関連付けられているとのインスタンス化は、非必要なスキップできるようになるXmlException
彼/彼女がしても気にしないことがあります。私もそのような方法が存在しないことを知って非常に驚きました。 :|