2013-10-13 3 views
0

У меня есть этот XML-файл в этом формате.Создать файл XML

<Questions> 
    <Question> 
     <questiontext>The remains of the Tabon man was discovered in the Tabon Caves in  </questiontext> 
     <choice1>Lipuun Point</choice1> 
     <choice2>Callao Cave</choice2> 
     <choice3>Hinagdanan Cave</choice3> 
     <choice4>Montfort Bat Sanctuary</choice4> 
     <answer>Lipuun Point</answer> 
    </Question> 
</Questions> 

Я создаю это через блокнот ++. И прочитал это просто так.

System.IO.Stream stream = TitleContainer.OpenStream("Content//Level1Trivia.xml"); 
XDocument doc = XDocument.Load(stream);    
level1Trivia = new List<Trivias>(); 
level1Trivia = (from question in doc.Descendants("Question") 
    select new Trivias() 
    { 
     Question = question.Element("questiontext").Value, 
     Choice1 = question.Element("choice1").Value, 
     Choice2 = question.Element("choice2").Value, 
     Choice3 = question.Element("choice3").Value, 
     Choice4 = question.Element("choice4").Value, 
     Answer = question.Element("answer").Value, 
    }).ToList(); 

Проблема есть. Я могу прочитать XML-файл, созданный извне. Но я не знаю, как создать/написать xml-файл через код. И используйте мой данный код, чтобы прочитать его. Есть идеи? Благодаря!

ответ

1

Используйте объект XElement. Пример:

XDocument document = new XDocument(); 
XElement rootElement = new XElement("Questions"); 

foreach(Question question in QuestionsCollection) 
{ 
    XElement questionElement = new XElement("Question"); 

    questionElement.Add(new XElement("questiontext") { Value = question.Text }); 
    questionElement.Add(new XElement("choice1") { Value = question.Question1 }); 
    questionElement.Add(new XElement("choice2") { Value = question.Question2 }); 
    questionElement.Add(new XElement("choice3") { Value = question.Question3 }); 
    questionElement.Add(new XElement("choice4") { Value = question.Question4 }); 
    questionElement.Add(new XElement("answer") { Value = question.Answer }); 

    rootElement.Add(questionElement); 
} 

document.Add(rootElement); 
document.Save("C:\Location.xml"); 

Нечто подобное должно работать.

+0

Я попробую это. Как сохранить его в папке с содержимым? – ljpv14

+0

По содержанию, я предполагаю, что вы имеете в виду ту же папку, в которой находится программа? Существует несколько способов. Мой предпочтительный способ - это просто «document.Save (« File.xml »);», потому что, когда ни один диск не указан, путь - это путь к запуску программы. – Falgantil

+0

Есть ли способ проверить, существует ли файл? Потому что я попытаюсь сохранить данные в XML. И если файл уже существует. Я хочу получить его данные и добавить один набор данных. – ljpv14

0

Используйте этот код для создания и сохранение XML-файл, пропуская XML пути для сохранения файла в методу CreateXml

Проверить эту ссылку Create and Save XML file in C#/VB

public void CreateXml(string XmlPath) 
{ 
try 
      { 
       if (ds.Tables[0].Rows.Count > 0) 
       { 
        string Name = string.Empty; 
        int Age = 0; 
        int Experience = 0; 

        Name = ds.Tables[0].Rows[0]["EmployeeName"].ToString(); 
        Age = int.Parse(ds.Tables[0].Rows[0]["EmployeeAge"].ToString()); 
        Experience = int.Parse(ds.Tables[0].Rows[0]["EmployeeExperience"].ToString()); 

        string xml = XmlTemplate().ToString().Replace("EmpName", Name).Replace("EmpAge", Age.ToString(),Replace("EmpExperience", Experience.ToString()); 
        XmlPath = XmlPath + "Employee_" + Name + ".xml"; 
        XmlDocument xdoc = new XmlDocument(); 
        xdoc.LoadXml(xml); 
        xdoc.Save(XmlPath); 
        lblMessage.Text = "XML Created Successfully."; 
       } 
       else 
       { 
        lblMessage.Text = "InValid Employee ID."; 
       } 
      } 
      catch (Exception ex) 
      { 
       lblMessage.Text = ex.Message.ToString(); 
      } 
} 


public string XmlTemplate() 
{ 

      string Xml = "<Employee>" + 
          "<Name>EmpName</Name>" + 
          "<Age>EmpAge</Age>" + 
       "<Experience>EmpExperience</Experience>" + 
          "</Employee>"; 
      return Xml; 
} 

Надеется, что это помогает. Благодарю.

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