我有一个Xml文件,我试图加载到visual studio然后将另一个D100条目附加到该文件,然后写入或追加1000次。
下面的代码会保存文档,但不会附加任何内容。
<flp:Tab xmlns:flp="http://www.w3.org/2001/XMLSchema" Title="Testing">
<flp:Form Number="0" id="1005" />
<flp:Rev Time="2013-01-21T15:08:00">
<flp:Author Name="Brad" Aid="15" />
</flp:Rev>
<flp:Designs Id="D100">
<flp:D100 Number="1">
<flp:Code>A</flp:Code>
<flp:Documented>true</flp:Documented>
<flp:Note>In Process</flp:Note>
<flp:Testers>
<flp:Tester Name="David">
<flp:Titles>
<flp:Title Number="0" Name="Entry 1">
<flp:Start>Begin</flp:Start>
<flp:Finish>End</flp:Finish>
</flp:Title>
</flp:Titles>
</flp:Tester>
</flp:Testers>
<flp:TestGivers>
<flp:TestGiver Name="James" />
</flp:TestGivers>
<flp:IsRequired>true</flp:IsRequired>
<flp:IsOptional>false</flp:IsOptional>
</flp:D100>
</flp:Designs>
</flp:Tab>
我试图在Xml文件中追加并写出信息1000次
这是我的C#代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml;
namespace AppendXml
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load("C:\\Desktop\\Temp.xml");
//XmlElement root = doc.CreateElement("Tab");
XmlElement D100 = doc.CreateElement("D100");
D100.SetAttribute("Number", "2");
XmlElement Code = doc.CreateElement("Code");
Code.InnerText = "B";
XmlElement Documented = doc.CreateElement("Documented");
Documented.InnerText = "false";
XmlElement Note = doc.CreateElement("Note");
Note.InnerText = "Complete";
XmlElement Tester = doc.CreateElement("Tester");
Tester.SetAttribute("Name", "John");
XmlElement Title = doc.CreateElement("Title");
Title.SetAttribute("Number", "0");
Title.SetAttribute("Name", "Ronald");
XmlElement Start = doc.CreateElement("Start");
Start.InnerText = "Begin";
XmlElement Finish = doc.CreateElement("Finish");
Finish.InnerText = "End";
XmlElement TestGiver = doc.CreateElement("TestGiver");
TestGiver.SetAttribute("Name", "Jeremy");
XmlElement IsRequired = doc.CreateElement("IsRequired");
IsRequired.InnerText = "true";
XmlElement IsOptional = doc.CreateElement("IsOptional");
IsOptional.InnerText = "false";
D100.AppendChild(IsOptional);
D100.AppendChild(IsRequired);
D100.AppendChild(TestGiver);
D100.AppendChild(Finish);
D100.AppendChild(Start);
D100.AppendChild(Title);
D100.AppendChild(Tester);
D100.AppendChild(Note);
D100.AppendChild(Documented);
D100.AppendChild(Code);
//root.AppendChild(D100);
//doc.AppendChild(root);
doc.Save("test13.xml");
}
}
}
文档保存但注意附加。我要离开的是什么?
答案 0 :(得分:1)
您应该将D100
附加到flp:Designs
- 现在您没有将其附加到任何内容,因此没有任何内容添加到文档中:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("flp", "http://www.w3.org/2001/XMLSchema");
XmlNode designs = doc.SelectSingleNode("//flp:Designs", nsmgr);
designs.AppendChild(D100);
您还在默认命名空间中创建D100
,可能您希望在http://www.w3.org/2001/XMLSchema
命名空间中创建它,并使用flp
前缀作为XML的其余部分:
XmlElement D100 = doc.CreateElement("flp", "D100", "http://www.w3.org/2001/XMLSchema");
最后:http://www.w3.org/2001/XMLSchema
是一个标准命名空间,这里用于一些自定义XML,这通常是错误的。