好的,我现在使用document方法编写XML而不是XmlWriter。 我用。编写了我的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>
文件的格式我可以弄清楚如何阅读年龄变量但无法获取name属性。我的XML文件与上面略有不同,但不是很多
答案 0 :(得分:3)
逐个元素编写XML文件可能非常耗时 - 而且容易出错。
我建议使用XML Serializer来完成这类工作。
如果您不关心格式 - 并且要求只是能够序列化为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
中提供了一些很好的示例答案 1 :(得分:0)
尝试使用System.Xml
(使用起来更清晰):
保存:
XmlDocument xdoc = new XmlDocument();
...
xdoc.Save("test.xml");
阅读:
XmlDocument xdoc = new XmlDocument();
...
xdoc.Load("test.xml");
答案 2 :(得分:0)
如果可以,请使用XDocument类而不是XmlDocument。它更容易使用。要编写然后读取XML,您可以这样做:
var fileName = @"foo.xml";
// Write XML
var xdoc = new XDocument(
new XElement("users",
new XElement("user",
new XAttribute("name", "John Doe"),
new XAttribute("age", "42")),
new XElement("user",
new XAttribute("name", "Jane Doe"),
new XAttribute("age", "39"))));
xdoc.Save(fileName);
// Read XML
var xdoc2 = XDocument.Load(fileName);
foreach (var userxml in xdoc2.Root.Elements("user"))
{
var name = userxml.Attribute("name");
var age = userxml.Attribute("age");
// use values as needed ...
}