2012-01-13 14 views
1

私はこの厄介な小さな問題を手伝ってくれることを願っています。 XML設定ファイルにファイルパスを書き込もうとしていますが、何も起こりません。エラーメッセージやJust in Timeデバッグウィンドウは表示されません。そのコードブロックは実行されません。XmlWriterを使用してXMLファイルにファイルパスを書き込む

プログラム機能は、ユーザーアカウントを設定し、各アカウントのファイルを選択する機能です。ファイルパスを空白のままにしておくと、問題なくXMLファイルが作成されます。ただし、書き込むパスが1つでもあれば、ファイルは作成されません。ここで

は私の関数のサンプルです:

private void SaveSettings() 
    { 
     XmlWriterSettings xml_settings = new XmlWriterSettings(); 
     xml_settings.Indent = true; 
     xml_settings.IndentChars = (" "); 

     using (XmlWriter xml_settings_file = XmlWriter.Create("settings.xml", xml_settings)) 
     { 
      xml_settings_file.WriteStartElement("Main_Node"); 
      xml_settings_file.WriteElementString("SettingA", Properties.Settings.Default.SettingA.ToString()); 
      xml_settings_file.WriteElementString("SettingB", Properties.Settings.Default.SettingB.ToString()); 
      xml_settings_file.WriteElementString("SettingC", Properties.Settings.Default.SettingC.ToString()); 

      for (int i = 1; i < Properties.Settings.Default.UserAccounts.Count; i++) 
      { 
       xml_settings_file.WriteElementString("Account", System.Security.SecurityElement.Escape(Properties.Settings.Default.UserAccounts[i].ToString())); 
       xml_settings_file.WriteElementString("File", System.Security.SecurityElement.Escape(Properties.Settings.Default.FilePaths[i])); 
      } 

      xml_settings_file.WriteEndElement(); 
      xml_settings_file.Flush(); 
     } 

    } 

物事はさらに混乱にするために、私はシンプルな「テスト」という文字列をファイルパス変数を交換する際に、それが正常に動作し、ファイルは問題なく作成されます。

+0

エスケープしないでxmlエンティティをエンコードする必要があります – vittore

+0

コードをステップ実行するとどうなりますか?あなたの 'SaveSettings'メソッドを呼び出しますか?それはループに到達し、その後神秘的に終了しますか?このポイントの後に実行される可能性のあるコードを実行するか、そこでのすべての処理を終了しますか? – Chris

+0

私は、あなたの 'の前に' 1 'で始まり、 'File'と' Account'の値を二重にエスケープするのは間違っています。あなたは 'SaveSettings'がまったく実行されているのですか?あなたはデバッガを歩き、どこで止まるのか見てみましょうか? –

答えて

0

これはまだ解決されています。私は代わりに組み込みのアプリケーション設定を使用して終了しました。

+0

本当に答えは...私は同じ問題を抱えています。 –

1

パス文字をエスケープする代わりにCDATAを使用してください。

あなたは置き換えることができます。

xml_settings_file.WriteElementString("File", System.Security.SecurityElement.Escape(Properties.Settings.Default.FilePaths[i])); 

次の行に:

xml_settings_file.WriteStartElement("File"); 
xml_settings_file.WriteCData(Properties.Settings.Default.FilePaths[i]); 
xml_settings_file.WriteEndElement(); 
+0

これは何もしなかった。それでも同じ結果が得られます。 –

関連する問題