C# 创建XML文件

C# 创建XML文件,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我有这种格式的xml文件 <Questions> <Question> <questiontext>The remains of the Tabon man was discovered in the Tabon Caves in </questiontext> <choice1>Lipuun Point</choice1> <choice2>Callao Ca

我有这种格式的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();
System.IO.Stream=TitleContainer.OpenStream(“Content//Level1Trivia.xml”);
XDocument doc=XDocument.Load(流);
level1Trivia=新列表();
level1Trivia=(源于文件子体中的问题(“问题”)
选择新的琐事()
{
问题=问题.元素(“问题文本”).值,
Choice1=question.Element(“Choice1”).Value,
Choice2=问题.元素(“Choice2”).值,
Choice3=问题.元素(“Choice3”).值,
Choice4=问题.元素(“Choice4”).值,
答案=问题。元素(“答案”)。值,
}).ToList();

问题是。我可以读取外部创建的xml文件。但我不知道如何通过代码创建/编写xml文件。并使用我给定的代码来读取它。有什么想法吗?谢谢

使用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");

类似的方法应该可以使用。

通过将XML保存文件路径传递给方法CreateXml

查看此链接

public void CreateXml(字符串XmlPath)
{ 
尝试
{
如果(ds.Tables[0].Rows.Count>0)
{
string Name=string.Empty;
int年龄=0;
int经验=0;
Name=ds.Tables[0]。行[0][“EmployeeName”]。ToString();
Age=int.Parse(ds.Tables[0].Rows[0][“EmployeeAge”].ToString());
Experience=int.Parse(ds.Tables[0].Rows[0][“EmployeeExperience”].ToString());
字符串xml=XmlTemplate().ToString().Replace(“EmpName”,Name).Replace(“EmpAge”,Age.ToString()),Replace(“EmpExperience”,Experience.ToString());
XmlPath=XmlPath+“Employee_”+Name+“.xml”;
XmlDocument xdoc=新的XmlDocument();
LoadXml(xml);
保存(XmlPath);
lblMessage.Text=“已成功创建XML。”;
}
其他的
{
lblMessage.Text=“员工ID无效”;
}
}
捕获(例外情况除外)
{
lblMessage.Text=ex.Message.ToString();
}
}
公共字符串XmlTemplate()
{
字符串Xml=“”+
“EmpName”+
“经营”+
“经验丰富”+
"";
返回Xml;
}

希望这对您有所帮助。谢谢。

我会尝试一下。我如何将其保存到我的内容文件夹?我想您指的是程序所在的同一文件夹?有几种方法。我首选的方法是“document.save”(“File.xml”),因为没有指定驱动器时,路径就是程序的运行路径。有没有办法检查文件是否存在?因为我将尝试将数据保存为XML。如果文件已经存在,我想获取其数据并添加一组数据。@Ijpv14:很抱歉延迟。在这种情况下,您必须检查文件是否存在,如果存在,请将其加载到内存中rst。然后添加问题并从那里继续。记住覆盖该文件(我认为在使用现有文件的路径时,默认情况下会这样做)
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;
}