XmlTextWriter将对象序列化为XML元素
本文关键字:XML 元素 序列化 对象 XmlTextWriter | 更新日期: 2023-09-27 17:58:12
我只想对现有XML文件中的一个分支执行对象序列化。使用读取时
RiskConfiguration AnObject;
XmlSerializer Xml_Serializer = new XmlSerializer(typeof(RiskConfiguration));
XmlTextReader XmlReader = new XmlTextReader(@"d:'Projects'RiskService'WCFRiskService'Web.config");
XmlReader.ReadToDescendant("RiskConfiguration");
try
{
AnObject = (RiskConfiguration)Xml_Serializer.Deserialize(XmlReader);
AnObject.Databases.Database[0].name = "NewName";
}
finally
{
XmlReader.Close();
}
这是可能的,我不知道如何再次编辑对象执行它可以在不擦除XML文件中其他现有元素的情况下保存文件。有人能帮我吗?
我找到了一种显示所需项目序列化的方法。我现在该怎么做,而不是粘贴到XML中的原始元素?
StringWriter wr = new StringWriter();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
settings.Encoding = System.Text.Encoding.Default;
using (XmlWriter writer = XmlWriter.Create(wr, settings))
{
XmlSerializerNamespaces emptyNamespace = new XmlSerializerNamespaces();
emptyNamespace.Add(String.Empty, String.Empty);
Xml_Serializer.Serialize(writer, AnObject, emptyNamespace);
MessageBox.Show(wr.ToString());
}
首先,您应该停止使用new XmlTextReader()
。自.NET 2.0以来,这一点一直被弃用。请改用XmlReader.Create()
。
其次,XML不是一种随机访问介质。你不能前后移动,在文件中间写入。这是一个基于文本的文件。
如果您需要"修改"该文件,那么您需要编写该文件的新版本。您可以从原始文件读取,直到需要反序列化,将节点写入文件的新版本。然后,您可以从原始文件反序列化,修改对象,并序列化到新版本。然后,您可以继续读取原始版本,并将节点写入新版本。