Desired output (obtained using XmlNode and appending children):
What I get with a new method to create and append:
*) On creation (when file does not exist)
*) On appending
And here is the code:
Code:
<?xml version="1.0" ?> - <Definitions> - <Definition> <Acronym>some acro</Acronym> <Name>some name</Name> - <Value> <A>12</A> <B>55</B> <Alpha>124</Alpha> <Beta>21</Beta> </Value> </Definition> - <Definition> <Acronym>some acro 2</Acronym> <Name>some name 2</Name> - <Value> <A>121</A> <B>5551</B> <Alpha>1224</Alpha> <Beta>321</Beta> </Value> </Definition> </Definitions>
*) On creation (when file does not exist)
<?xml version="1.0" encoding="utf-8" ?>
- <Definitions xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<Acronym>bad acro</Acronym>
<Name>bad name</Name>
- <Value>
<A>-522</A>
<B>-21</B>
<Alpha>-121</Alpha>
<Beta>-12</Beta>
</Value>
</Definitions>
- <Definitions xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<Acronym>bad acro</Acronym>
<Name>bad name</Name>
- <Value>
<A>-522</A>
<B>-21</B>
<Alpha>-121</Alpha>
<Beta>-12</Beta>
</Value>
</Definitions>
<?xml version="1.0" encoding="utf-8"?>
<Definitions xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<Acronym>bad acro</Acronym>
<Name>bad name</Name>
<Value>
<A>-522</A>
<B>-21</B>
<Alpha>-121</Alpha>
<Beta>-12</Beta>
</Value>
</Definitions><?x ml version="1.0" encoding="utf-8"?>
<Definitions xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<Acronym>bad acro 2</Acronym>
<Name>bad name 2</Name>
<Value>
<A>41</A>
<B>87</B>
<Alpha>987</Alpha>
<Beta>-87</Beta>
</Value>
</Definitions>
<Definitions xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<Acronym>bad acro</Acronym>
<Name>bad name</Name>
<Value>
<A>-522</A>
<B>-21</B>
<Alpha>-121</Alpha>
<Beta>-12</Beta>
</Value>
</Definitions><?x ml version="1.0" encoding="utf-8"?>
<Definitions xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<Acronym>bad acro 2</Acronym>
<Name>bad name 2</Name>
<Value>
<A>41</A>
<B>87</B>
<Alpha>987</Alpha>
<Beta>-87</Beta>
</Value>
</Definitions>
Code:
/// <summary>
/// not working
/// </summary>
/// <param name="definition"></param>
public void SerializeToXML(Definition definition)
{
if (File.Exists("definitions.xml"))
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Definition));
FileInfo fileInfo = new FileInfo("definitions.xml");
Stream inStream = fileInfo.OpenRead();
Definition tempDef = xmlSerializer.Deserialize(inStream) as Definition;
inStream.Close();
tempDef = definition;
StreamWriter sw = fileInfo.AppendText();
xmlSerializer.Serialize(sw, tempDef);
sw.Close();
}
else
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Definition));
TextWriter textWriter = new StreamWriter("definitions.xml");
xmlSerializer.Serialize(textWriter, definition);
textWriter.Close();
}
}
Comment