продолжить запись в тот же файл XML без удаления в c# - PullRequest
0 голосов
/ 29 марта 2020

Я сделал этот код, пока он работает хорошо, но единственная проблема заключается в том, что файл XML удаляется каждый раз, когда я использую метод addUser, я хочу, чтобы код продолжал писать под ним

код, который я написал в c#:

 public static void AddUser(PersonData pd)
        {
            XmlTextWriter xWriter = new XmlTextWriter("D:\\PersonData.Xml", Encoding.UTF8);
            xWriter.Formatting = Formatting.Indented;
            xWriter.WriteStartElement("User");
            xWriter.WriteAttributeString("idNumber", pd.IdNumber1);

            xWriter.WriteStartElement("Firstname");
            xWriter.WriteString(pd.FirstName1);
            xWriter.WriteEndElement();//<FirstName>

            xWriter.WriteStartElement("LastName");
            xWriter.WriteString(pd.LastName1);
            xWriter.WriteEndElement();//<LastName>

            xWriter.WriteStartElement("DateOfBirth");
            xWriter.WriteString(pd.DateOfBirth1.ToString());
            xWriter.WriteEndElement();//<DateOfBirth>

            xWriter.WriteStartElement("Address");
            xWriter.WriteString(pd.Address1);
            xWriter.WriteEndElement();//<Address>

            xWriter.WriteEndElement();//<user>
            xWriter.Close();
        }

XML вывод:

<User idNumber="316447077">
  <Firstname>majd</Firstname>
  <LastName>sadi</LastName>
  <DateOfBirth>29/03/1998 14:54:50</DateOfBirth>
  <Address>hohos</Address>
</User>

the XML вывод, который я хочу сделать:

 <User idNumber="316447077">
      <Firstname>majd</Firstname>
      <LastName>sadi</LastName>
      <DateOfBirth>29/03/1998 14:54:50</DateOfBirth>
      <Address>hohos</Address>
    </User>
    <User idNumber="316447077">
      <Firstname>majd</Firstname>
      <LastName>sadi</LastName>
      <DateOfBirth>29/03/1998 14:54:50</DateOfBirth>
      <Address>hohos</Address>
    </User>

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Предполагая, что у вас есть root узел для вашего XML (недействительный XML без него), вы можете сделать это с помощью XElement:

XElement xe;

if (File.Exists("D:\\PersonData.Xml"))
  xe = XElement.Load("D:\\PersonData.Xml");
else
  xe = new XElement("Users");

XElement newUser = new XElement("User");
newUser.Add(new XAttribute("idNumber", pd.IdNumber1));
newUser.Add(new XElement("Firstname", pd.FirstName1));
newUser.Add(new XElement("LastName", pd.LastName1));
newUser.Add(new XElement("DateOfBirth", pd.DateOfBirth1.ToString()));
newUser.Add(new XElement("Address", pd.Address1));

xe.Add(newUser);
xe.Save("D:\\PersonData.Xml");
1 голос
/ 29 марта 2020

попробуйте грипп sh как xWriter.Flu sh () после того, как вы напишите свой конечный элемент?

...