1

ClientBin フォルダーに XMLFile1.xml という名前の xml ファイルがあります。ファイルには 3 つのノードがあります。

<?xml version="1.0" encoding="utf-8" ?>
<People>
  <Person FirstName="Ram" LastName="Sita"/>
  <Person FirstName="Krishna" LastName="Radha"/>
  <Person FirstName="Heer" LastName="Ranjha"/>
</People>

次のようにファイルからノードを読み取ることができます。

   public class Person
        {
            public string FirstName { get; set; }
            public string LastName { get; set; }
        }



private void Button_Click_1(object sender, RoutedEventArgs e)
{

    Uri filePath = new Uri("XMLFile1.xml", UriKind.Relative);
    WebClient client1 = new WebClient();
    client1.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client1_DownloadStringCompleted);

    client1.DownloadStringAsync(filePath);
}


  void client1_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                XDocument doc = XDocument.Parse(e.Result);
                IEnumerable<Person> list = from p in doc.Descendants("Person")
                                           select new Person
                                           {
                                               FirstName = (string)p.Attribute("FirstName"),
                                               LastName = (string)p.Attribute("LastName")
                                           };
                DataGrid1.ItemsSource = list;
            }
        }

しかし、これにノードを追加できません。XDocument と XMLDocument でまだ行ったことで、コンパイル エラーが発生しました。ありがとう。

更新:たとえば、私はそのようなことを試しました:

string FirstName = "フェルハド"; string LastName = "Cebiyev";

    XDocument xmlDoc = new XDocument();
    string path = "C:\\Users\\User\Desktop\\temp\\SilverlightApplication3\\SilverlightApplication3.Web\\ClientBin\\XMLFile1.xml";
    xmlDoc.Load(path);
    xmlDoc.Add(new Person { FirstName=FirstName, LastName = LastName});

    xmlDoc.Save(path);
4

1 に答える 1

1

これが問題です:

xmlDoc.Add(new Person { FirstName=FirstName, LastName = LastName});

2 つの問題:

  • これは、ドキュメントのルートに追加しようとします。すでにルート要素があるため、失敗します。
  • ドキュメントに a を追加しようとしPersonています。を追加しXElementます。

だからあなたはおそらく欲しい:

xmlDoc.Root.Add(new XElement("Person",
                             new XAttribute("FirstName", FirstName),
                             new XAttribute("LastName", LastName)));
于 2012-12-04T12:04:04.457 に答える