1
我有一点问题。我尝试在XML与此代码添加一个元素:将元素添加到IsolatedStorage中的XML文件
using (IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!myStore.FileExists("categorie_settings.xml"))
{
using (IsolatedStorageFileStream myStream = new IsolatedStorageFileStream("categorie_settings.xml", FileMode.Create, myStore))
{
XNamespace _name = "";
XDocument new_doc = new XDocument(
new XDeclaration("1.0", "utf-8", ""),
new XElement(_name + "Root",
new XElement("Row",
new XElement("Nome", query.FirstOrDefault().Nome.ToString()),
new XElement("Tipo", query.FirstOrDefault().Tipo.ToString()),
new XElement("URL", query.FirstOrDefault().URL.ToString()),
new XElement("Err", "Errore1")
)));
new_doc.Save(myStream);
}
}
else
{
using (IsolatedStorageFileStream myStream = new IsolatedStorageFileStream("categorie_settings.xml", FileMode.Open, myStore))
{
XDocument doc1 = XDocument.Load(myStream);
doc1.Element("Root").Add(
new XElement("Row",
new XElement("Nome", query.FirstOrDefault().Nome.ToString()),
new XElement("Tipo", query.FirstOrDefault().Tipo.ToString()),
new XElement("URL", query.FirstOrDefault().URL.ToString()),
new XElement("Err", "Errore2")));
doc1.Save(myStream);
}
}
在第二使用我想一个项目添加到XML文件,但后2调用的结果是这样的:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Row>
<Nome>Homepage</Nome>
<Tipo>News</Tipo>
<URL>/web/ansait_web_rss_homepage.xml</URL>
<Err>Errore1</Err>
</Row>
</Root><?xml version="1.0" encoding="utf-8"?>
<Root>
<Row>
<Nome>Homepage</Nome>
<Tipo>News</Tipo>
<URL>/web/ansait_web_rss_homepage.xml</URL>
<Err>Errore1</Err>
</Row>
<Row>
<Nome>Cronache</Nome>
<Tipo>News</Tipo>
<URL>/web/notizie/rubriche/cronaca/cronaca_rss.xml</URL>
<Err>Errore2</Err>
</Row>
</Root>
它似乎在整个文件加上新元素之前添加到文件中。我如何才能添加元素?
第一个和第二个节点相反,但问题仍然存在。实际上,当我输入第三个元素时会生成一个异常,因为它找到两个语句。 –
如果要在Row元素末尾添加元素,只需将“var firstRow - rows.First();”与“var lastRow = rows.Last();”和“firstRow.AddBeforeSelf(...”与“lastRow.AddAfterSelf(...”。 –
至于异常,你得到的是因为XDocument.Save(Stream)将新形成的文档追加到(看看自己看到的结果流)如果使用XDocument.Save(字符串文件名),它会覆盖现有的文件,这就是您要查找的行为 –