0

XMLファイルを作成し、完全に保存しました。残念ながら、保存されたファイルはフォームの読み込みイベントで読み込まれません。何がうまくいかなかったのかを理解しようとしましたが、それをロードする方法がまだわかりません。手伝って頂けますか?

これが私のフォームロードイベントです

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

if (!Directory.Exists(path + "\\iproject"))
{
    Directory.CreateDirectory(path + "\\iproject");
}

if (!File.Exists(path + "\\iproject\\address.xml"))
{
    File.Create(path + "\\iproject\\address.xml");
}

XmlTextWriter xw = new XmlTextWriter(path + "\\iproject\\address.xml", Encoding.UTF8);
xw.WriteStartElement("people");
xw.WriteEndElement();
xw.Close();

// load items wen form load event
XmlDocument xdoc = new XmlDocument();
xdoc.Load(path + "\\iproject\\address.xml");
foreach (XmlNode xnode in xdoc.SelectNodes("people/person"))
{
    person p = new person();
    p.name = xnode.SelectSingleNode("name").InnerText;
    p.ipaddress = xnode.SelectSingleNode("ipaddress").InnerText;
    people.Add(p);
    listBox1.Items.Add(p.name);
}

これが私の保存イベントです

XmlDocument xdoc = new XmlDocument(); // saving listview data to xml file
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
xdoc.Load(path + "\\iproject\\address.xml");
XmlNode xnode = xdoc.SelectSingleNode("people");
xnode.RemoveAll();

foreach (person p in people)
{
    XmlNode xTop = xdoc.CreateElement("person");
    XmlNode xname = xdoc.CreateElement("name");
    XmlNode xipaddress = xdoc.CreateElement("ipaddress");

    xname.InnerText = p.name;
    xipaddress.InnerText = p.ipaddress;

    xTop.AppendChild(xname);
    xTop.AppendChild(xipaddress);
    xdoc.DocumentElement.AppendChild(xTop);
}

xdoc.Save(path + "\\iproject\\address.xml");
4

1 に答える 1

1

エラーに関する詳細情報が役立ちます。

ただし、私の目には、ドキュメントがすでに存在している場合でも、ロード時に常に別の「人」要素を書き込んでいると思います。

ロード内の2番目のIfステートメントは次のようになります。

   if (!File.Exists(path + "\\iproject\\address.xml"))
    {
        File.Create((path + "\\iproject\\address.xml"));

        XmlTextWriter xw = new XmlTextWriter(path + "\\iproject\\address.xml", Encoding.UTF8);
        xw.WriteStartElement("people");
        xw.WriteEndElement();
        xw.Close();
    }
于 2013-03-12T14:32:53.500 に答える