【问题标题】:How to append node to xml file in Silverlight?如何在 Silverlight 中将节点附加到 xml 文件?
【发布时间】:2012-12-04 11:57:11
【问题描述】:

我在 ClientBin 文件夹中有一个名为 XMLFile1.xml 的 xml 文件。 文件共有三个节点:

<?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 = "Ferhad"; 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);

【问题讨论】:

  • 我已经更新了问题。

标签: c# xml silverlight


【解决方案1】:

这就是问题所在:

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

两个问题:

  • 试图添加到文档的。已经有一个根元素,所以会失败。
  • 这是试图在文档中添加Person。您想添加一个XElement

所以你可能想要:

xmlDoc.Root.Add(new XElement("Person",
                             new XAttribute("FirstName", FirstName),
                             new XAttribute("LastName", LastName)));

【讨论】:

  • @FarhadJabiyev:啊,是的 - 你正在尝试直接使用文件。您不能在 Silverlight 中这样做,但这与 XML 无关。阅读 Silverlight 存储。接下来,请阅读tinyurl.com/so-list - 你应该永远发布一个包含编译错误的问题而不包括错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
相关资源
最近更新 更多