if (!File.Exists(signatureFile))
{
XElement signature;
try
{
XNamespace ns = "http://www.w3.org/2000/09/xmldsig#";
signature = new XElement("DocumentSignature", new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"), new XAttribute(XNamespace.Xmlns + "xsd", "http://www.w3.org/2001/XMLSchema"),
new XElement("Files", new XAttribute("id", "files"),
new XElement("File", new XAttribute("file_name", file), new XAttribute("digestmethod", "http://www.w3.org/2000/09/xmldsig#sha1"), new XAttribute("archive_path", "data/" + file), "/E06svX3vAnvYnnGlMT9auuh8uE=")),
//new XElement("File", new XAttribute("file_name", file), new XAttribute("digestmethod", "http://www.w3.org/2000/09/xmldsig#sha1"), new XAttribute("archive_path", "data/" + file), "x5kx5oXhxZ/lLGZ0iLTFLL3XVig=")),
new XElement("Attributes",
new XElement("Attribute", new XAttribute("id", "ad_ret_policy"), new XAttribute("system_attribute", "false"), new XAttribute("readonly", "false"),
new XElement("Value", metadata["Retention Policy"])),
new XElement("Attribute", new XAttribute("id", "ad_keepyears"), new XAttribute("system_attribute", "false"), new XAttribute("readonly", "false"),
new XElement("Value", metadata["Keep years"])),
new XElement("Attribute", new XAttribute("id", "ad_classification"), new XAttribute("system_attribute", "false"), new XAttribute("readonly", "false"),
new XElement("Value", metadata["Classification plan"])),
new XElement("Attribute", new XAttribute("id", "ad_permanent"), new XAttribute("system_attribute", "false"), new XAttribute("readonly", "false"),
new XElement("Value", metadata["Permanent"])),
new XElement("Attribute", new XAttribute("id", "ad_keywords"), new XAttribute("system_attribute", "false"), new XAttribute("readonly", "false"),
new XElement("Value", metadata["Keywords"])),
new XElement("Attribute", new XAttribute("id", "ad_archive"), new XAttribute("system_attribute", "false"), new XAttribute("readonly", "false"),
new XElement("Value", metadata["Archive"])),
new XElement("Attribute", new XAttribute("id", "ad_is_long_term_format"), new XAttribute("system_attribute", "false"), new XAttribute("readonly", "false"),
new XElement("Value", "false")))); //END OF ATTRIBUTES SNIPPET
signature.Save(signatureFile);
}
catch (Exception ex)
{
ex.ToString();
Program.logger.Error(ex);
throw;
}
}
else
{
XDocument doc = XDocument.Load(signatureFile);
XElement items = doc.Root.Descendants("File").FirstOrDefault();
items.ReplaceWith(new XElement("File", new XAttribute("file_name", file), new XAttribute("digestmethod", "http://www.w3.org/2000/09/xmldsig#sha1"),
new XAttribute("archive_path", "data/" + file), "/E06svX3vAnvYnnGlMT9auuh8uE="));
doc.Save("C:\\Docs\\modified.xml");
}
У меня проблема с сохранением документа. Это возвращает мне исключение, говорящее, что файл используется другим процессом. Я также пытался использовать FileStream, но безуспешно. Мне нужно использовать тот же документ, как указано. Я также попытался удалить файл после того, как он был использован другим методом, с той же ошибкой. Сохранение с указанием даты и времени делает его уникальным и работает, но его трудно использовать в другом методе в таком формате. Есть идеи?