public OldInformationFile(UploadedFile uf) { this.UploadedFile = uf; InitializationXmlData(uf.OldXmlData); }
private bool ReadAndRewriteXmlData(UploadedFile uploadedFile) { XmlDocument doc = new XmlDocument(); try { using (MemoryStream zipToOpen = new MemoryStream(uploadedFile.FileContent)) { using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read)) { //////////////////////////app.xml//////////////////////////////////////// //берем конкретный файл который нужно считать ZipArchiveEntry readmeEntry = archive.GetEntry("docProps/app.xml"); //считвываем поток из конкретного файла System.IO.Stream entryStream = readmeEntry.Open(); doc = new XmlDocument(); //передаем паток для обработки xml файлов doc.Load(entryStream); // получим корневой элемент System.Xml.XmlElement root = doc.DocumentElement; // обход всех узлов в корневом элементе до изменения данных foreach (System.Xml.XmlNode childnode in root.ChildNodes) { uploadedFile.OldXmlData.Add(childnode.Name, childnode.InnerText); } /////////////////////////////core.xml///////////////////////////////////// //берем конкретный файл который нужно считать и модефицировать readmeEntry = archive.GetEntry("docProps/core.xml"); //считвываем поток из конкретного файла entryStream = readmeEntry.Open(); //передаем паток для обработки xml файлов doc.Load(entryStream); //создаем менеджер пространств имен и описываем его XmlNamespaceManager xs = new XmlNamespaceManager(doc.NameTable); xs.AddNamespace("cp", "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"); xs.AddNamespace("dc", "http://purl.org/dc/elements/1.1/"); xs.AddNamespace("dcterms", "http://purl.org/dc/terms/"); xs.AddNamespace("dcmitype", "http://purl.org/dc/dcmitype/"); xs.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); // получим корневой элемент root = doc.DocumentElement; // обход всех узлов в корневом элементе до изменения данных foreach (System.Xml.XmlNode childnode in root.ChildNodes) { uploadedFile.OldXmlData.Add(childnode.Name, childnode.InnerText); } //////////////////////МОДЕФИЦИРУЕМ УЗЛЫ/////////////////// //the tag - dc:title XmlNode myNode = root.SelectSingleNode("dc:title", xs); if (myNode != null) { myNode.InnerText = "The best title"; } //the tag - dc:subject myNode = root.SelectSingleNode("dc:subject", xs); if (myNode != null) { myNode.InnerText = "Some a new subject of the article"; } //the tag - dc:creator myNode = root.SelectSingleNode("dc:creator", xs); if (myNode != null) { myNode.InnerText = "The king of rings"; } //the tag - cp:keywords myNode = root.SelectSingleNode("cp:keywords", xs); if (myNode != null) { myNode.InnerText = "blablabla"; } //the tag - dc:description myNode = root.SelectSingleNode("dc:description", xs); if (myNode != null) { myNode.InnerText = "A new description this document"; } //the tag - cp:lastModifiedBy myNode = root.SelectSingleNode("cp:lastModifiedBy", xs); if (myNode != null) { myNode.InnerText = "It is Alex!!!!!!!!!!!!!!!!"; } //the tag - cp:revision myNode = root.SelectSingleNode("cp:revision", xs); if (myNode != null) { myNode.InnerText = new Random().Next(1, 1000).ToString(); } //the tag - dcterms:created myNode = root.SelectSingleNode("dcterms:created", xs); DateTimeOffset dateTimeOffset; if (myNode != null) { dateTimeOffset = DateTimeOffset.ParseExact(myNode.InnerText.ToString(), "yyyy-MM-dd'T'HH:mm:ssZ", System.Globalization.CultureInfo.InvariantCulture); myNode.InnerText = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ssZ"); } //the tag - dcterms:modified myNode = root.SelectSingleNode("dcterms:modified", xs); if (myNode != null) { dateTimeOffset = DateTimeOffset.ParseExact(myNode.InnerText.ToString(), "yyyy-MM-dd'T'HH:mm:ssZ", System.Globalization.CultureInfo.InvariantCulture); myNode.InnerText = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ssZ"); } } } using (MemoryStream zipStream = new MemoryStream()) { //считали данные в поток zipStream.Write(uploadedFile.FileContent, 0, uploadedFile.FileContent.Length); using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Update)) { archive.GetEntry("docProps/core.xml").Delete(); ZipArchiveEntry readmeEntry = archive.CreateEntry("docProps/core.xml"); string strFromDoc = doc.InnerXml.ToString(); Console.WriteLine(strFromDoc); using (StreamWriter writer = new StreamWriter(readmeEntry.Open())) { writer.WriteLine(strFromDoc); } } uploadedFile.FileContent = zipStream.ToArray(); } } catch (InvalidDataException ex) { return(false); } return(true); }
public OldInformationFile(Dictionary <string, string> information, UploadedFile uf = null) { this.UploadedFile = uf; InitializationXmlData(information); }