写入xml文件
本文关键字:文件 xml 写入 | 更新日期: 2023-09-27 18:09:07
我想知道我是否采用了正确的方法来写入XML文件,因为当我在此之后查看文件时,更改不存在
XmlDocument doc = new XmlDocument();
doc.Load("pubs.xml");
XmlElement root = doc.DocumentElement;
XmlElement pub = doc.CreateElement("Pub");
XmlElement name = doc.CreateElement("Name");
XmlElement address = doc.CreateElement("Address");
XmlElement postCode = doc.CreateElement("PostCode");
XmlElement score = doc.CreateElement("PubScore");
name.InnerText = txtName.Text;
address.InnerText = txtAddress.Text;
postCode.InnerText = txtPc.Text;
score.InnerText = txtPs.Text;
pub.AppendChild(name);
pub.AppendChild(address);
pub.AppendChild(postCode);
pub.AppendChild(score);
root.AppendChild(pub);
doc.Save("pubs.xml");
这个,在文档的根应该写一个元素,如
<Pub>
<Name>xxx</Name>
<Address>xxx</Address>
<OnlineRating>xxx</OnlineRating>
<PostCode>xxx</PostCode>
</Pub>
attempt change:
private void btnAdd_Click(object sender, EventArgs e)
{
XDocument doc = new XDocument(
new XElement("Pub",
new XElement("Name", txtName.Text),
new XElement("Addresss", txtAddress.Text),
new XElement("OnlineRating", txtPs.Text),
new XElement("PostCode", txtPc.Text),
)
);
doc.Save("pubs.xml");
}
如果你使用的是。net 3.5或更高版本,那么你可以这样写:
XDocument doc = new XDocument(
new XElement("Pub",
new XElement("Name", "xxx"),
new XElement("Addresss", "xxx"),
new XElement("OnlineRating", "xxx"),
new XElement("PostCode", "xxx")
)
);
doc.Save("pubs.xml");
你完成了!
同样,如果您希望XML为:<Pub>
<Name FirstName="Xyz" SecondName="Abc" />
<PostCode Code="8787"/>
</Pub>
那么你可以这样做:
XDocument doc = new XDocument(
new XElement("Pub",
new XElement("Name", new XAttribute("FirstName", "Xyz"), new XAttribute("SecondName", "Abc")),
new XElement("PostCode", new XAttribute("Code", "8787"))
)
);
doc.Save("pubs.xml");
如果您想加载一个现有的XML文件,并且希望将这些附加到该文件中,那么执行以下操作:
XDocument doc = XDocument.Load("pubs.xml"); //load the existing file!
//add one element with its descendants
doc.Add(new XElement("Pub",
new XElement("Name", "xxx"),
new XElement("Addresss", "xxx"),
new XElement("OnlineRating", "xxx"),
new XElement("PostCode", "xxx")
)
);
doc.Save("pubs.xml"); //save the whole document!
可能是完全错误的,但你试过改变:
pub.AppendChild(name);
pub.AppendChild(address);
pub.AppendChild(postCode);
pub.AppendChild(score);
root.AppendChild(pub);
root.AppendChild(pub);
pub.AppendChild(name);
pub.AppendChild(address);
pub.AppendChild(postCode);
pub.AppendChild(score);
只是执行你的代码片段在"pub .xml",看起来像这样…
<SomeElement>
<SomeTag1/>
<SomeTag2/>
<SomeTag3/>
</SomeElement>
…生成以下"pub .xml"…
<SomeElement>
<SomeTag1 />
<SomeTag2 />
<SomeTag3 />
<Pub>
<Name>name</Name>
<Address>address</Address>
<PostCode>post_code</PostCode>
<PubScore>score</PubScore>
</Pub>
</SomeElement>
…如果我没理解错的话,这就是你想要的(你说:"…在文档的根应该写一个像…"的元素。
所以无论什么导致你的问题是在你给我们看的代码片段之外。
你确定doc.Save("pubs.xml")
是成功的,而不是抛出一个异常(例如,由于只读标志)?
另外,您确定正在查看右边的"pub .xml"吗?也许你有不止一份副本,而你碰巧看错了?查看doc.BaseURI
以确认要写入的文件的实际位置。