2013-11-14 129 views
1

我有一个问题。如何使用Linq to XML将变量写入XML文件?我有它设置,使变量放在一个公共变量被如何将变量写入XML文件?

 public string name; 
    public string age; 

被放入这些值是

 this.name = characterTextBox.Text; 
    this.age = characterageTextBox.Text; 

现在我已经创建了一个处理这些变量的放置类到XML文件中,但每次我尝试从公共字符串中检索变量时,它总是以空值出现;即使我将其保存到公共变量时进行了测试,看它是否为空。 这里是保存代码

Form1 f = new Form1(); 
     String name = f.name; 
     String age = f.age; 


     var doc = XDocument.Load(XMLFILE.xml); 


     var newElement = new XElement("player", name, 
      new XElement("age", age)); 

     doc.Element("players").Add(newElement); 


     doc.Save(XMLFILE.xml); 

如果有人可以帮助,那将是非常赞赏。

谢谢。

+5

您需要表单的原始实例;一个新的实例将有它自己的变量。 – SLaks

回答

1

顺便说一句,你的代码看起来,nameage都是局部变量,它们会覆盖Form1类的实例的字段。

假设当你点击你的表格上,并没有使用额外类btnSave按钮,你保存,你的代码应该是这样的:

private void btnSave_Click(object sender, EventArgs e) 
{ 
    this.name = characterTextBox.Text; 
    this.age = characterAgeTextBox.Text; 
    var file = "xmlfile.xml"; 
    var doc = XDocument.Load(file); 
    var newElement = new XElement("player", name, 
     new XElement("age", age)); 
    doc.Element("players").Add(newElement); 
    doc.Save(file); 
} 

如果你想保存传递给其他类,你的代码的简化版本,可能是这样的:

private void btnSave_Click(object sender, EventArgs e) 
{ 
    name = characterTextBox.Text; 
    age = characterAgeTextBox.Text; 
    XmlUtility.Save(this); 
} 

class XmlUtility 
{ 
    public static void Save(Form1 form) 
    { 
     string name = form.name; 
     string age = form.age; 
     var file = "xmlfile.xml"; 
     var doc = XDocument.Load(file); 
     var newElement = new XElement("player", name, 
      new XElement("age", age)); 
     doc.Element("players").Add(newElement); 
     doc.Save(file); 
    } 
} 

我只想补充一点,你可能要重新考虑一点点你的应用程序的设计,以容纳可能创建一个Character类/之间传递分类Name,Age和其他属性。