前提・実現したいこと
ネストされたapp.configのシリアライズ方法が分かりません。
以下のようにappSettingsに出力したいと思っています。
Properties.Settings.Defaultを使わずに、ファイルの直接編集で行おうと思っていますが、方法が分かりません。
詳しい方、ご教示いただけないでしょうか。
■行いたい出力ファイルのイメージ----------
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Class" value='[ {"name":"田中", "value":"82"}, {"name":"佐藤", "value":"56"}, {"name":"山本", "value":"93"}, ]'/> </appSettings> </configuration>
開発環境 -------------------------
Visual Studio 2017
.Net Framework 4.7
> Properties.Settings.Defaultを使わずに、ファイルの直接編集で行おうと思っていますが
その理由は何でしょう? それによって答えが変わってくるかもしれません。
迅速なレスポンスありがとうございます。
現在読み込みは直接app.configをConfigration.Managerを介して行っていますが、Properties.Settingsには登録していません。
ユーザーが直接app.configをメモ帳で開いて編集してもらう使い方にしていましたが、ユーザーのリテラシーを考慮すると少し難易度が高くなるので追加で編集画面を作ろうと思った次第です。
Properties.Settingsへの登録をすると整合性が取れなくなるのではないかと思い、除外して考えていましたが、実現できるのであればProperties.Settingsを使う方法でも問題ございません。
app.config を編集するのではなくて、独自に xml ファイルとか json ファイルに設定情報を保持するようにして、それを編集する「編集画面」を作るのが良さそうな気がします。100% 質問者さんの自由にできますから。
>SurferOnWww様
それはそうなんですが、一度app.configで配布してしまい、設定済みのユーザーもいるので難しいところです。
もう少し待って他の回答が無いようであればそのようにしたいと思います。
ありがとうございました。
> 一度app.configで配布してしまい
配布されているのは xxx.exe.config ではないかと思うのですが、ちょっと変ですね。そこはちょっと置いといて・・・
何にせよ xml ファイルですから、読み込んで、編集して、書き戻すのは「編集画面」を作れば可能だと思います。ただ、xxx.exe.config とか user.config をユーザーが勝手に変更してしまうのは、アプリの設定とバッティングして問題を起こしそうな気がします。
上に書いた「配布されているのは xxx.exe.config ではないかと思うのですが」に関連する記事です。ご参考まで。
構成ファイルの保存場所
http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx
>SurferOnWww様
ご指摘ありがとうございます。おっしゃる通り、配布しているのはxxx.exe.configです。正確ではありませんでした。
一般的なXMLと記載が異なり、key,valueで扱われるため、XMLのネストについて調べてもイマイチ自分の課題に置き換えて解決方法が見い出せずにいます…。
value の文字列の形式は JSON の array のようですので、xml ファイルから value の文字列を取得したら JSON から C# のオブジェクトにデシリアライズしてそれを編集し、編集し終わったら JSON にシリアライズして xml ファイルの value に書き戻せばよさそうに思いますが。
上のコメントの具体例を回答欄に書いておきます。
回答1件
あなたの回答
tips
プレビュー