C#のXMLWriterによって一連の設定が書き出されています。ここにいくつかのコードがあります:XMLWriterによって現在の項目が書き込まれる方法
try
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
using (writer = XmlWriter.Create("PCOB2NET.XML", settings))
{
// Write XML data.
writer.WriteStartElement("PowerCOBOL2NETMigration");
writer.WriteStartElement("config");
writer.WriteElementString("VSVersion", selectedVSver);
writer.WriteElementString("path2SelectedVSVerProjects", path2SelectedVSVerProjects);
if (path2VSoverridden)
writer.WriteElementString("path2VSoverridden", "true");
else
writer.WriteElementString("path2VSoverridden", "false");
writer.WriteElementString("path2PRCfile", path2PRCfile);
writer.WriteElementString("path2XMLfile", path2XMLfile);
writer.WriteElementString("path2VSProject", path2VSProject);
...などです。 私の問題は、例外(例えばnullフィールドのような)がある場合、catchブロックに行き、予期したように例外を報告しますが、その時点で書き込みしていたフィールドはわかりません。
私の質問:
は例外が発生したとき、私は現在の文字列を取得することができますどのような方法が書かれてありますか?私は成功していないWebを検索し、私はXMLWriterのすべてのプロパティとメソッドを見渡しましたが、私はそれを行う方法を見つけることができません。私にそれを与える特定のタイプの例外トラップがありますか?どのような助けや考えがありがとう。
私はLINQのファンですので、投稿したコードを見ることに興味がありました。ありがとう。しかし、私は実際の問題にどのように対処しているのか分かりません。私は確かに設定をXMLファイルにブロックとして追加することはできますが、(nullフィールドのような)エラーがあっても、それは私に不適切な形式のXMLを与える可能性があり、問題の原因となったフィールドはまだ分かりません。私が問題なくファイルを書き込むことができたとしても、それを読んで何とか処理しなければならないので、問題を動かすと思う。例外がスローされるべきであることは間違いありません。私の問題は、それが原因でフィールドがスローされることを知ることです。 – Morepork
ヌル例外はありません。これは、アプリケーションがリリースされる前に修正する必要があるプログラミングエラーです。XmlWriterの使用は推奨されていません。開いているタグと終了タグのバランスを適切に調整する必要があります。終了タグは自動的に処理されます。 – jdweng
はい、そうです。フィールドにx00文字が含まれていたため、フィールドがnullだったためではなく、エラーが発生しました。私はnullフィールドを試して、彼らは正常に働いた。 – Morepork