Serialize o objeto para XML DENTRO de um elemento pai
Eu tenho um programa WPF C # e, em um ponto, preciso serializar objetos para XML. Em outros lugares, eu tenho usado isso:
TextWriter writer = new StreamWriter(xmlFilePath);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(MYOBJECT_TYPE));
try
{
xmlSerializer.Serialize(writer, MYOBJECT);
}
catch (Exception ex)
{
MessageBox.Show("Exception occured while writing to Xml" + ex.Message);
}
finally
{
writer.Close();
}
Isso é fantástico, mas isso significa que tenho que ter um arquivo XML diferente para cada objeto que quero serializar. Como uso esse método (com a menor quantidade de modificações) para serializar o objeto no XMLDENTRO de um elemento pai? Dessa forma, quando quero desserializar o objeto posteriormente, posso encontrar o elemento que desejo e desserializar tudo dentro desse elemento.
Conforme solicitado, aqui estáCreateDefaultXml();
:
static void CreateDefaultXml()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<StoredObjects></StoredObjects>");
XmlNode root = doc.DocumentElement;
try
{
doc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine("Exception occured while creating Xml" + ex.InnerException);
}
}
EDITAR:
Atualmente, é isso que eu tenho (mas gera uma exceçãoThere was an error generating the XML document.
)
if (!File.Exists(xmlFilePath))
CreateDefaultXml();
XDocument doc = XDocument.Load(xmlFilePath);
var element = doc.Descendants("Object").Where(x => x.Attribute("Name").Value.Equals("objectName")).SingleOrDefault();
if (element == null)
{
element = new XElement("Object", new XAttribute("Name", objectName));
doc.Element("StoredObjects").Add(element);
}
XmlWriter writer = element.CreateWriter();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(MYOBJECT_TYPE));
try
{
xmlSerializer.Serialize(writer, MYOBJECT);
}
catch (Exception ex)
{
MessageBox.Show("Exception occured while writing to Xml: " + ex.Message);
}
finally
{
writer.Close();
doc.Save(xmlFilePath);
}