【问题标题】:Adding multiple Records to the XML file将多条记录添加到 XML 文件
【发布时间】:2016-12-26 16:48:53
【问题描述】:

我想在 xml 文件中添加多条记录,这是我正在使用的代码,

XmlTextWriter xwriter = new XmlTextWriter("C:\\Users\\Desktop\\TestFolder\\Xdoc1.xml", Encoding.UTF8);
xwriter.Formatting = Formatting.Indented;
xwriter.WriteStartElement("Employee");
xwriter.WriteStartElement("Person");
xwriter.WriteStartElement("Name");
xwriter.WriteString(textBox1.Text);
xwriter.WriteEndElement();
xwriter.WriteStartElement("Designation");
xwriter.WriteString(textBox2.Text);
xwriter.WriteEndElement();
xwriter.WriteStartElement("Employee ID");
xwriter.WriteString(textBox3.Text);
xwriter.WriteEndElement();
xwriter.WriteStartElement("Email");
xwriter.WriteString(textBox4.Text);
xwriter.WriteEndElement();
xwriter.WriteEndElement();
xwriter.WriteEndElement();
xwriter.Close();

这段代码的问题是只能添加一条记录。当我尝试添加第二条记录时,前一条记录被覆盖。

【问题讨论】:

标签: c# wpf xml


【解决方案1】:

Linq to XML 使 xml 任务更容易。看下面的代码。

if (!System.IO.File.Exists("D:\\Employees.xml"))
{
    XElement element = new XElement("Employees");
    element.Save("D:\\Employees.xml");
}

XElement doc = XElement.Load("D:\\Employees.xml");

XElement employee = new XElement("Employees",
                                    new XElement("Employee",
                                                    new XElement("Person",
                                                                new XElement("Name",
                                                                            textBox1.Text),
                                                                new XElement("Designation",
                                                                            textBox2.Text),
                                                                new XElement("EmployeeID",
                                                                            textBox3.Text),
                                                                new XElement("Email",
                                                                            textBox4.Text))));

doc.Add(employee);
doc.Save("D:\\Employees.xml");

【讨论】:

    【解决方案2】:

    这里不需要转换xmlWriter类。

    string xmlFile = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Candidates.xml");
    
    xmldoc = new XmlDocument();
    xmldoc.Load(xmlFile);
    root = xmldoc.DocumentElement;
    
    try
    {
        XmlNode CandidateNode = xmldoc.CreateNode(XmlNodeType.Element, "Candidate", "");
        XmlNode id = xmldoc.CreateNode(XmlNodeType.Element, "CandidateId", "");
        id.InnerText = "1";
        CandidateNode.AppendChild(id);
        XmlNode subPositionId = xmldoc.CreateNode(XmlNodeType.Element, "SubPositionId", "");
        subPositionId.InnerText = candidate.PositionId.ToString();
        CandidateNode.AppendChild(subPositionId);
        XmlNode firstName = xmldoc.CreateNode(XmlNodeType.Element, "FirstName", "");
        firstName.InnerText = candidate.FirstName;
        XmlNode lastName = xmldoc.CreateNode(XmlNodeType.Element, "LastName", "");
        lastName.InnerText = candidate.LastName;
        CandidateNode.AppendChild(firstName);
        CandidateNode.AppendChild(lastName);
        root.AppendChild(CandidateNode);
        xmldoc.Save(xmlFile);
    

    这会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-06-17
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      相关资源
      最近更新 更多