0

私はしばらくこのプロジェクトをいじっていましたが、レンガの壁にぶつかりました。これは私の最初のプロジェクトであり、ここからどこへ行くべきか本当にわかりません。私は次のステップが何であるかを読むために最善を尽くしていたので、ここに再び投稿する必要はありませんでしたが、選択の余地がほとんどないようです.

とにかく、ここで私がこのプロジェクトで達成しようとしていることについて簡単に説明します。既存の XML ドキュメントの 3 つの要素から特定の値を取得しようとしています。各要素の各値をそれぞれのテキスト ボックスに読み込んだ後、値の変更をドキュメントに保存しようとしています。(簡単に言うと完了です!)

XDocument を使用して値をリストに格納し、テキスト ボックスに表示しています。

変更を元の値に更新して保存する方法がわかりません。これまでのところ、保存しようとすると空白の XML ドキュメントが残り、アプリケーションがクラッシュします。:\

読み取って表示できる XML データは次のとおりです。

<client>
  <endpoint address="http://127.0.0.1:8086">
  <endpoint address="http://127.0.0.1:8084">
  <endpoint address="net.tcp://127.0.0.1:8085">
</client>

そして、これまでに書いたコードの一部を以下に示します。

    OpenFileDialog AgentConfig = new OpenFileDialog();

    private void button1_Click(object sender, EventArgs e)
    {

        AgentConfig.Filter = "Agent.exe.config (*.config)|*.config";
        if (AgentConfig.ShowDialog() == DialogResult.OK)
        {
            textBox1.Text = AgentConfig.FileName;
        }

        var addresses = XDocument.Load(AgentConfig.FileName)
                     .Descendants("endpoint")
                     .Select(x => (string)x.Attribute("address"))
                     .ToList();

        textBox2.Text = addresses[0];
        textBox3.Text = addresses[1];
        textBox4.Text = addresses[2];

        if (textBox2.Text != addresses[0])
        {
            addresses[0] = textBox2.Text;
        }

        if (textBox3.Text != addresses[1])
        {
            addresses[1] = textBox3.Text;
        }

        if (textBox4.Text != addresses[2])
        {
            addresses[3] = textBox4.Text;
        }


    }

    private void button2_Click(object sender, EventArgs e)
    {
        SaveFileDialog SF = new SaveFileDialog();
        if (SF.ShowDialog() == DialogResult.OK)
        {

        }
    }

どんな助けでも大歓迎です。

前もって感謝します!

4

3 に答える 3

1
var xElem = new XElement("client",
    new XElement("endpoint", new XAttribute("address", textBox2.Text)),
    new XElement("endpoint", new XAttribute("address", textBox3.Text)),
    new XElement("endpoint", new XAttribute("address", textBox4.Text)));

xElem.Save(filename);
于 2013-08-19T06:46:31.107 に答える
0

One approach could be to use the following classes:

class System.Data.DataSet 

Represents an in-memory cache of data, see documentation

class System.IO.StramWriter  

Implements a TextWriter for writing characters to a stream in a particular encoding, see documentation

Go then like this:

DataSet ds = newDataSet();
CreateMyDataSet("your arguments"); // Create your DataSet according to your xml-format
StreamWriter sw = new StreamWriter(SaveFileDialog.FileName, ...);
sw.Write(ds.GetXml());  // GetXml() returns the xml representation of your data
sw.Close();  
于 2013-08-19T06:41:17.247 に答える
-1

Xml ライターを使用して保存してみてください。ここにあなたのためのリンクがあります

[リンク] http://www.dotnetperls.com/xmlwriter

于 2013-08-19T06:38:31.380 に答える