2012-01-27 2 views

ответ

1

Я использую LINQ к XML, это, кажется, легче мне и это, как я делаю это

Первый груз он

 /// <summary> 
     /// loads and returns the XML file with the given name 
     /// </summary> 
     /// <param name="modelHesapAdi"> name of the XML file to be returned</param> 
     /// <returns>returns the xml of given model hesap adı</returns> 
     public static XElement LoadXMLWithGivenModelHesapAdi(string modelHesapAdi, string xmlDirectory) 
     { 
      XElement modelsXmlFile = XElement.Load(xmlDirectory + modelHesapAdi + ".xml"); 

      return modelsXmlFile; 
     } 

Вызов выше метод в другом

 /// <summary> 
     /// gets a roommessage nood from CreateRoomMessageXElement 
     /// and adds it to the related room XML file and saves it 
     /// </summary> 
     /// <param name="modelHesapAdi">a string which has the name of the XML file to be changed</param> 
     /// <param name="incomingMemberHesapAdi">a string to be inserted to the xml file, which has the members name</param> 
     /// <param name="entranceTime"> a string for time, holds the member's entrance time</param> 
     public void AddMemberNodeToRoomMembersXMLWithGivenModelHesapAdiAndUyeHesapAdi(string modelHesapAdi, 
                         string incomingMemberHesapAdi, 
                         string entranceTime) 
     { 
      XElement modelsXmlFile = BAL.Models.Model.LoadXMLWithGivenModelHesapAdi(modelHesapAdi, xmlDirectory);//loads the xml 
      XElement roomMember = CreateRoomIncomingMemberXElement(incomingMemberHesapAdi, entranceTime);//creates child element and returns it 
      modelsXmlFile.Add(roomMember);//adds the child element 
      modelsXmlFile.Save(xmlDirectory + modelHesapAdi + ".xml");//saves the edited file 
     } 

Для создания дочернего элемента,

 /// <summary> 
     /// creates and returns roommessage nood 
     /// </summary> 
     /// <param name="memberHesapAdi">the sender of the message</param> 
     /// <param name="message">sent message</param> 
     /// <param name="timeSent">the time when the message was sent</param> 
     /// <returns></returns> 
     private XElement CreateRoomIncomingMemberXElement(string memberHesapAdi, string entranceTime) 
     { 
      XElement roomMessage = new XElement("RoomMember", 
                  new XElement("MemberHesapAdi", memberHesapAdi), 
                  new XElement("Time", entranceTime)); 
      return roomMessage; 
     } 

В методе CreateRoomIncomingMemberXElement вы создадите свой собственный дочерний элемент с вашими требованиями, вы вызовете его в AddMemberNodeToRoomMembersXMLWithGivenModelHesapAdiAndUyeHesapAdi и добавьте его в загруженный файл, а затем сохраните его.

1

Вы можете использовать the XDocument class легко манипулировать Xml в C#:

var doc = XDocument.Parse(yourXmlString); // Or XDocument.Load(pathToFile); 
var childElement = new XElement("YourChildElementName", yourChildElementValue); 
doc.Add(childElement); 
2

Простой:

  • Загрузите XML в память
  • Найти е xisting узел, где вы хотите добавить
  • Создать новый элемент
  • Зов что-то вроде XNode.AddAfterSelf
  • Сохранить результат

Точные вызовы будут зависеть от того, какую библиотеку использовать; лично я бы предложил использовать LINQ to XML, если возможно, (например, если вы используете .NET 3.5 или выше), поскольку он намного проще в использовании, чем предыдущие API.

Смежные вопросы