保存时添加新的XElement追加整个XML文件,以现有的文件 [英] Adding new XElement appends entire XML file to existing file when saved
本文介绍了保存时添加新的XElement追加整个XML文件,以现有的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果未找到,然后打开它来创建一个新的条目,我创建了一个新的XML文档。但它只是似乎是追加完成新的XML文件,我创建空白文件结尾
创建后:
< XML版本=1.0编码=UTF-8独立=是&GT?;
<设备/>
添加新的XElement后:
< XML版本=1.0编码=UTF-8独立=是&GT?;
<设备/><?XML版本=1.0编码=UTF-8独立=是>
<设备>
<装置>
<名称>&嗒嗒LT; /名称>
&其中; src00>真&所述; / src00>
< /装置>
< /设备>
我的code ...我已经尝试添加两种不同的方式,两者具有相同的结果。
//创建文件,如果未找到
如果(!storage.FileExists(设置\\ mydevices.xml))
{
使用(IsolatedStorageFileStream流= storage.OpenFile(设置\\ mydevices.xml,FileMode.Create,FileAccess.ReadWrite))
{
的XDocument devicesDoc =
新的XDocument(
新XDeclaration(1.0,UTF-8,是),
新的XElement(设备)
);
System.IO.StreamWriter文件=新System.IO.StreamWriter(流);
devicesDoc.Save(文件);
file.Dispose();
}
}
//添加新设备
使用(IsolatedStorageFileStream流= storage.OpenFile(设置\\ mydevices.xml,FileMode.Open,FileAccess.ReadWrite))
{
的XDocument mydevicesXml = XDocument.Load(流);
//的XElement项目=新的XElement(设备,
//新的XElement(名,selectedDeviceName)
//新的XElement(src00,真)
//);
//mydevicesXml.Descendants("Devices").First().Add(item);
//mydevicesXml.Element("Devices").Add(item);
mydevicesXml.Root.Add(
新的XElement(设备,
新的XElement(名,selectedDeviceName)
新的XElement(src00,真)));
System.IO.StreamWriter文件=新System.IO.StreamWriter(流);
mydevicesXml.Save(文件);
file.Dispose();
解决方案
尝试:
的XElement根;
如果(File.Exists(文件))
根= XElement.Load(文件);
其他
根=新的XElement(设备);
root.Add(新的XElement(设备,
新的XElement(名,selectedDeviceName)
新的XElement(src00,真)));
root.Save(文件);
I am created a new xml document if one isn't found, then opening it to create a new entry. However it just seems to be appending a completed new XML file to end of the blank file I created
after creation:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Devices />
after adding new xelement:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Devices /><?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Devices>
<device>
<name>blah</name>
<src00>True</src00>
</device>
</Devices>
my code ... I've tried adding two different ways, both with the same results
// Create file if not found
if (!storage.FileExists("settings\\mydevices.xml"))
{
using (IsolatedStorageFileStream stream = storage.OpenFile("settings\\mydevices.xml", FileMode.Create, FileAccess.ReadWrite))
{
XDocument devicesDoc =
new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Devices")
);
System.IO.StreamWriter file = new System.IO.StreamWriter(stream);
devicesDoc.Save(file);
file.Dispose();
}
}
// Add new device
using (IsolatedStorageFileStream stream = storage.OpenFile("settings\\mydevices.xml", FileMode.Open, FileAccess.ReadWrite))
{
XDocument mydevicesXml = XDocument.Load(stream);
//XElement item= new XElement("device",
// new XElement("name",selectedDeviceName),
// new XElement("src00","True")
// );
//mydevicesXml.Descendants("Devices").First().Add(item);
//mydevicesXml.Element("Devices").Add(item);
mydevicesXml.Root.Add(
new XElement("device",
new XElement("name", selectedDeviceName),
new XElement("src00", "True")));
System.IO.StreamWriter file = new System.IO.StreamWriter(stream);
mydevicesXml.Save(file);
file.Dispose();
解决方案
Try:
XElement root;
if(File.Exists(file))
root = XElement.Load(file);
else
root = new XElement("Devices");
root.Add(new XElement("device",
new XElement("name", selectedDeviceName),
new XElement("src00", "True")));
root.Save(file);
这篇关于保存时添加新的XElement追加整个XML文件,以现有的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文