2016-10-14 2 views
1

Это может быть очень глупый вопрос, но я не могу заставить эту работу работать. Я пытаюсь сформировать XML со следующей структурой и иметь возможность добавлять в него дополнительные данные в любой момент времени, а также читать данные. Сейчас все это я получаю:XML все еще пуст?

<?xml version="1.0" encoding="utf-8"?> 
<sessions /> 

Я хочу

<?xml version="1.0" encoding="utf-8"?> 
<sessions> 
<session date="14.10.2016" time="17:15" amount="3"> 
<folder>C:\\Users</folder> 
<folder>C:\\Test</folder> 
<folder>C:\\Asgbsf\\Aleksei</folder> 
</session> 
<sessions /> 

Мой C# код

static void Main(string[] args) 
    { 
     createXML(); 
     Console.WriteLine("Test XML"); 

     folderList.Add("C:\\Users"); 
     folderList.Add("C:\\Test"); 
     folderList.Add("C:\\Asgbsf\\Aleksei"); 
     XML(); 

     Console.ReadKey(); 
    } 


    static List<String> folderList = new List<String>(); 


    private static string generateRandom(int min, int max) 
    { 
     Random rnd = new Random(); 
     return rnd.Next(min, max).ToString(); 
    } 

    public static string pathToXml = "test_aleksei2.xml"; 
    public static void createXML() 
    { 

     XmlTextWriter textWritter = new XmlTextWriter(pathToXml, Encoding.UTF8); //Creating file 
     textWritter.WriteStartDocument(); //XML header 
     textWritter.WriteStartElement("sessions"); //XML head 
     textWritter.WriteEndElement(); //end writing element 
     textWritter.Close(); //close XmlTextWriter 


    } 



    public static void XML() 
    { 

     Console.WriteLine("XML function being executed"); 
     XmlDocument document = new XmlDocument(); //using XmlDocument to Read 
     document.Load(pathToXml); //loading XML 
     XmlNode element = document.CreateElement("session"); //parent element 


     XmlAttribute date = document.CreateAttribute("date"); //creating attribute 
     date.Value = "14.10.2016"; 
     element.Attributes.Append(date); //append attribute to element 

     XmlAttribute time = document.CreateAttribute("time"); 
     time.Value = generateRandom(0, 23) + ":" + generateRandom(1, 59); 
     element.Attributes.Append(time); 

     XmlAttribute amount = document.CreateAttribute("amount"); 
     amount.Value = generateRandom(1, 10); 
     element.Attributes.Append(amount); 


     XmlNode folder = null; 

     for (int i = 0; i < folderList.Count; i++) 
     { 
      Console.WriteLine(folderList[i]+" - " + i + "/" + folderList.Count); 
      folder = document.CreateElement("Folder"); 
      folder.InnerText = folderList[i]; 
      element.AppendChild(folder); 
     } 


     document.Save(pathToXml); 

    } 

Помогите пожалуйста, я не понимаю, что я делаю неправильно. Если я просто c & p, я бы даже не узнал, в чем проблема. Спасибо заранее.

ответ

1

В вашем методе XML вы никогда не добавляете элемент session в документ после его создания. Таким образом, даже если вы создаете и добавляете все эти дочерние элементы в элемент, ни один из них не добавляется в документ.

Вам нужно добавить эту строку перед сохранением документа:

document.DocumentElement.AppendChild(element); 
+0

Вау, отлично! Работает как отступы, хотя я не могу добавить дополнительные элементы, все это перезаписывается, но я думаю, мне нужно копать глубже. Большое спасибо –

+0

Рад, что я мог бы помочь. –

+0

Гоша, я тупой. Я не удалял функцию createXML(), и он воссоздавал файл XML ... Lol –

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