如何使用 WPF 中的 XmlDataProvider 从文本框在 XML 文件中添加节点



我想在产品节点下添加一个名为 list 的节点。

XAML 中的代码是:

<Window.Resources>
    <XmlDataProvider x:Name="myDP" x:Key="MyData" Source="Product.xml" XPath="products" 
                     IsAsynchronous="False" IsInitialLoadEnabled="True"
                     PresentationTraceSources.TraceLevel="High">
    </XmlDataProvider>
</Window.Resources>

addIdtm_button是:

 private void addItem_Click_1(object sender, RoutedEventArgs e)
 {
     try
     {
         XmlDataProvider provider = (XmlDataProvider)this.FindResource("MyData");
         XmlNode elmnt = provider.Document.CreateElement("item");
         elmnt.InnerText = itemTextBox.Text;
         provider.Document.ChildNodes[0].AppendChild(elmnt);
     }
     catch (Exception d)
     {
         MessageBox.Show(d.Message);
     }
 }

单击按钮时,将显示消息框:"当前节点不能包含其他节点。"

我现在能做什么???

您将追加到文档的第一个子项。 provider.Document.ChildNodes[0]会返回XmlDeclaration, Value="version="1.0" encoding="utf-8".因此,请改用将返回产品节点的provider.Document.ChildNodes[1]

修改代码后,addItem_Click_1如下所示:

private void addItem_Click_1(object sender, RoutedEventArgs e)
{
    try
    {
        XmlDataProvider provider = (XmlDataProvider)this.FindResource("MyData");
        XmlNode elmnt = provider.Document.CreateElement("list");
        elmnt.InnerText = itemTextBox.Text;            
        (provider.Document.ChildNodes[1]).ChildNodes[0].AppendChild(elmnt);
        // Assuming that your XML file is in the same directory as you exe. If not, then 
        // give the right path as parameter to Save
        provider.Document.Save("Product.xml");
    }
    catch (Exception d)
    {
        MessageBox.Show(d.Message);
    }
}

在上面的代码中,provider.Document.ChildNodes[1]将从 XML 文件返回products节点。 (provider.Document.ChildNodes[1]).ChildNodes[0]将返回product节点,您应该AppendChild

相关内容

  • 没有找到相关文章

最新更新