Сериализация объекта в XML внутри родительского элемента
У меня есть программа WPF C #, и в какой-то момент мне нужно сериализовать объекты в XML. В других местах я использовал это:
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();
}
Это фантастика, но это означает, что мне нужно иметь разные XML-файлы для каждого объекта, который я хочу сериализовать. Как использовать этот метод (с наименьшим количеством изменений) для сериализации объекта в XMLВ рамках родительского элемента? Таким образом, когда я захочу десериализовать объект позже, я могу просто найти нужный элемент и десериализовать все в этом элементе.
По запросу, вот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);
}
}
РЕДАКТИРОВАТЬ:
В настоящее время это то, что у меня есть (но это исключениеThere 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);
}