【发布时间】:2013-02-06 14:30:52
【问题描述】:
我想对现有 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());
}
【问题讨论】:
-
是否还有其他任何东西可以访问 xml 文件,或者您的进程是唯一对其进行处理的进程吗?如果没有,您可以维护一个包含原始 XML 的 XDocument 或 XmlDocument,并在更新文档时提取您想要序列化/反序列化的相关部分并将其刷新回磁盘。
标签: c# xml serialization deserialization xmltextwriter