将文本框值写入XML文件
本文关键字:XML 文件 文本 | 更新日期: 2023-09-27 18:07:25
我一直在尝试将文本框值写入xml文件,但无法获得正确的格式,因为我希望有
我使用以下代码
XDocument Xdoc = new XDocument(new XElement("Users"));
if (System.IO.File.Exists("D:''Users.xml"))
Xdoc = XDocument.Load("D:''Users.xml");
else
Xdoc = new XDocument();
XElement xml = /*new XElement("Users",*/
new XElement("User",
new XAttribute("UserId", txtUserId.Text),
new XAttribute("Password", txtPwd.Text));
if (Xdoc.Descendants().Count() > 0)
Xdoc.Descendants().First().Add(xml);
else
Xdoc.Add(xml);
Xdoc.Save("D:''Users.xml");
这里我得到了这种格式的xml
<User UserId="Sunny" Password="Sunny">
<User UserId="Sunny" Password="Sunny" />
<User UserId="Sunny" Password="Sunny" />
</User>
但是我想要这样
<Users>
<User>
<UserId>Sunny</UserId>
<Password>pwd</Password>
</User>
<User>
<UserId>Sunny</UserId>
<Password>pwd</Password>
</User>
</Users>
则使用XElement代替XAttribute。
new XElement("User",
new XElement("UserId", txtUserId.Text),
new XElement("Password", txtPwd.Text));
和添加多个用户,假设您有userList:
new XElement("Users",
userList.Select(u=>
new XElement("User",
new XElement("UserId", u.UserId),
new XElement("Password", u.Password)));
我自己的回答
XDocument Xdoc = new XDocument(new XElement("Users"));
if (System.IO.File.Exists("D:''Users.xml"))
Xdoc = XDocument.Load("D:''Users.xml");
else
{
Xdoc = new XDocument();
XElement xmlstart = new XElement("Users");
Xdoc.Add(xmlstart);
}
XElement xml = /*new XElement("Users",*/
new XElement("User",
new XElement("UserId", txtUserId.Text),
new XElement("Password", txtPwd.Text));
if (Xdoc.Descendants().Count() > 0)
Xdoc.Descendants().First().Add(xml);
else
{
Xdoc.Add(xml);
}
Xdoc.Element("Users").Save("D:''Users.xml");
这给了我像
这样的xml<?xml version="1.0" encoding="utf-8"?>
<Users>
<User>
<UserId>Sunny</UserId>
<Password>Sunny</Password>
</User>
<User>
<UserId>Sunny</UserId>
<Password>Sunny</Password>
</User>
<User>
<UserId>Sunny</UserId>
<Password>Sunny</Password>
</User>
</Users>
如果你想让这些值作为元素出现,那么你应该使用XElement
而不是XAttribute
…
。
XElement xml = /*new XElement("Users",*/
new XElement("User",
new XElement("UserId", "sunny"),
new XElement("Password", "pwd")
);
要在根目录下添加这些元素,使用:
Xdoc.Element("Users").Add(xml);
只是从XAttribute更改为XElement。因为属性会被添加到元素内部,就像。元素扮演不同的角色,形成树形XML结构。
根据你的要求,根元素现在变成Users。
XElement xml = new XElement("Users",
new XElement("User",
new XElement("UserId", "sunny"),
new XElement("Password", "pwd")
));
如果要重复添加子元素,可以单独或循环使用下面的代码块。
xml。添加(
新的XElement("用户",new XElement("UserId", "sunny"),new XElement("Password", "pwd"))
参考完整的示例
XDocument Xdoc = new XDocument(new XElement("Users"));
if (System.IO.File.Exists("D:''Users.xml"))
Xdoc = XDocument.Load("D:''Users.xml");
else
Xdoc = new XDocument();
XElement xml = /*new XElement("Users",*/
new XElement("User",
new XElement("UserId", "sunny"),
new XElement("Password", "pwd")
);
if (Xdoc.Descendants().Count() > 0)
Xdoc.Descendants().First().Add(xml);
else
{
Xdoc.Add(xml);
}
Xdoc.Save("D:''Users.xml");
试一试,
var users= new XElement("Users");
var userXml= new XElement("User",
new XElement("UserId", txtUserId.Text),
new XElement("Password", txtPwd.Text)
);
users.Add(userXml);