0

次の XML があります。

<appsettings>

    <add key="MDXQueryDirectory" value="" />

    <add key="URLPrefix" value="/Manager" />

</appsettings>

そしてコード:

 XElement doc = XElement.Load(@"config_path");


 var element = doc.Elements("add")
            .SingleOrDefault(x => x.Attribute("key").Value == "MDXQueryDirectory");


 element.SetAttributeValue("value", txtMDXQueryDirectory.Text);

txtMDXQueryDirectory テキスト ボックス データを MDXQueryDirectory appSsetting に割り当てたいと考えています。最初にSingleメソッドを使用しましたが、機能しませんでした。グーグルで調査したところ、このページが見つかったので、関連する記事でバグが解決されました。しかし、知っているSingleOrDefault方法は機能しません。投げるNullPointerException (Object reference not set to an instance an object)

どうすれば問題を解決できますか、またはxmlに値データを設定するための別のイディオムを提案できますか?

4

2 に答える 2

4

更新する要素を選択しているクエリを変更する必要があります。次のようにする必要があります。

 XDocument doc = XDocument.Load(@"config_path");

 var element = doc.Descendants().Elements("add")
               .SingleOrDefault(x => x.Attribute("key").Value == "MDXQueryDirectory");

 element.SetAttributeValue("value", txtMDXQueryDirectory.Text);

 doc.Save(@"config_path");

ファイルを取得するときXDocumentではなく、使用する必要もあります。XElement

注: XDocument.Load(@"config_path") - は、XML ファイルの場所を指している必要があります。現在はありません。

于 2013-08-19T11:02:58.880 に答える
0
 string config_file = @"config_file_path";

 var element = doc.Element("appSettings").Elements("add")
                           .SingleOrDefault(x => x.Attribute("key").Value.ToString() == "MDXQueryDirectory");

 element.SetAttributeValue("value", txtMDXQueryDirectory.Text);
 doc.Save(@"config_file_path");

このコード ブロックは正常に動作します。問題は、私の側のxmlノードに関連していたと思います。すべての返信に感謝します。

于 2013-08-20T10:28:53.780 に答える