テキスト ファイルからキーと値のペアを解析しようとすると問題が発生します。これを実行できるクラスを作成する能力がないため、私は自分がやりたいことを実行できるライブラリを探しています。
これは、コメントアウトされたテキストとキーと値のペアの一部とともに、私のファイルの冒頭です。
#!version:1.0.0.1
##File header "#!version:1.0.0.1" can not be edited or deleted, and must be placed in the first line.##
#######################################################################################
## Account1 Basic Settings ##
#######################################################################################
account.1.enable = 1
account.1.label = Front
account.1.display_name = Front
私が探しているのは、これらの値を取得し、ファイル内の同じ場所にあるファイル内でそれらを更新できるようにすることです。これらのファイルは人間が読める状態にしておく必要があるためです。
このライブラリは私が望むことを実行できるように思われるため、Nini を調べましたが、引き続き発生するエラーは、キーと値のペアではないため、ファイルの行 1 に基づいています。
Expected assignment operator (=) - Line: 1, Position: 19.
Nini のソースを読んだところ、Mysqlstyle を使用するようにリーダーを条件付ける方法があり、「#」をコメントとして使用する方法があるようですが、それを調整する方法や、このまま自動的に行われるかどうかはわかりません。完全に私の頭の上。
私のファイルは正当な ini ファイルではなく、キーと値のペアが含まれるセクションを検索するため、Nini ライブラリ内におそらく制限があることを理解しています。
このテキストを解析して表示し、Nini で編集するために使用しようとしたコードは次のとおりです。
public void EditCFG(string file)
{
if (!string.IsNullOrWhiteSpace(file))
{
IniConfigSource inifile = new IniConfigSource(file);
account_1_display_name.Text = inifile.Configs[""].Get("account.1.display.name");
}
}
誰かが私を正しい方向に向けてもらえますか?
編集
@rowland-shaw のおかげで、解決策が見つかりました。
private IConfigSource source = null;
public void EditCFG(string file)
{
if (!string.IsNullOrWhiteSpace(file))
{
IniDocument inifile = new IniDocument(file, IniFileType.MysqlStyle);
source = new IniConfigSource(inifile);
account_1_display_name.Text = source.Configs["account"].Get("account.1.display_name");
}
}
しかし、これは完全な答えではありませんでした。ファイル内にセクションも実装する必要がありました。更新されたテキストでこれらのファイルを取得する私の機器をテストした後、すべてが成功しました。