编程语言
首页 > 编程语言> > 编写xml并将其读回c#

编写xml并将其读回c#

作者:互联网

好的,我现在使用document方法而不是XmlWriter编写XML.
我已经写了我的XML文件.

userNode = xmlDoc.CreateElement("user");
attribute = xmlDoc.CreateAttribute("age");
attribute.Value = "39";
userNode.Attributes.Append(attribute);
userNode.InnerText = "Jane Doe";
rootNode.AppendChild(userNode);

但是问题还是再次读回这些设置.

<users>
  <user name="John Doe" age="42" />
  <user name="Jane Doe" age="39" />
</users>

我可以弄清楚如何读取age变量的文件格式,但无法使用name属性.我的XML文件与上面的略有不同,但差别不大

解决方法:

逐元素编写XML文件可能非常耗时-容易出错.

我建议对这种类型的工作使用XML序列化器.

如果您不关心格式,并且只需要能够序列化为XML并在以后进行反序列化,则代码可以很简单,如下所示:

public class User
{
    public string Name { get; set; }
    public int Age { get; set; }
}

string filepath = @"c:\temp\users.xml";

var usersToStore = new List<User>
{
     new User { Name = "John Doe", Age = 42 },
     new User { Name = "Jane Doe", Age = 29 }
};

using (FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate))
{
    XmlSerializer serializer = new XmlSerializer(usersToStore.GetType());
    serializer.Serialize(fs, usersToStore);
}

 var retrievedUsers = new List<User>();
 using (FileStream fs2 = new FileStream(filepath, FileMode.Open))
 {
     XmlSerializer serializer = new XmlSerializer(usersToStore.GetType());
     retrievedUsers = serializer.Deserialize(fs2) as List<User>;
 }

Microsoft在.Net documentation – Introducing XML Serialization中提供了一些很好的示例

标签:xml,c,xml-parsing
来源: https://codeday.me/bug/20191111/2018776.html