0

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();

このコードの問題は、1 つのレコードしか追加できないことです。2 番目のレコードを追加しようとすると、前のレコードが上書きされます。

4

2 に答える 2

0

ここでは、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);

これはあなたを助けるでしょう。

于 2013-09-04T04:47:46.733 に答える
0

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");
于 2013-09-04T06:06:16.987 に答える