我想知道我是否采用正确的方法写入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>
尝试更改:
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");
}
答案 0 :(得分:1)
如果您使用的是.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!
答案 1 :(得分:0)
可能完全错误,但您尝试过更改:
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);
因为这对我来说更具逻辑意义......
答案 2 :(得分:0)
只需执行截断“pubs.xml”的代码,就像这样......
<SomeElement>
<SomeTag1/>
<SomeTag2/>
<SomeTag3/>
</SomeElement>
...生成以下“pubs.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")
是否成功并且没有抛出异常(例如,应该是只读标志)?
另外,您确定要查看正确“pubs.xml”吗?也许你有不止一个副本而且你碰巧看错了?查看doc.BaseURI
以确认要写入的文件的实际位置。