public bool CreateExpertDocument(string templateFilePath, string newFilePath, int applicationId, int userId) { //открываем шаблон string xmlFile = File.ReadAllText(templateFilePath); XmlDocument document = new XmlDocument(); document.LoadXml(xmlFile); TagsToReplace tagsToReplaceClass = new TagsToReplace(); List <TagToReplace> tagsToReplaces = tagsToReplaceClass.GetTagsToReplace(document); CompetitionDataContext competitionDataBase = new CompetitionDataContext(); var idshape = (from a in competitionDataBase.zExpertPoints where a.Active == true select a.ID).ToList(); foreach (var id in idshape) { XmlNode childNode = FindNodeByValue(document.ChildNodes, "ZLinez" + id + "Z"); if (childNode != null) { childNode.Value = ((from a in competitionDataBase.zExpertPointsValue where a.FK_ExpertPoints == id && a.FK_ApplicationTable == applicationId && a.FK_ExpertsTable == userId select a.Value).FirstOrDefault()).ToString(); } if (childNode == null) { //childNode.Value = "Значение отсутствует"; } } //подчищаем и сохраняем в файл string newXmlFile = document.OuterXml; File.WriteAllText(newFilePath, newXmlFile); return(true); }
public bool CreateDocument(string templatePath, string newFilePath, int applicationId, int documentType) { #region создаем экземпляры нужных классов XmlTableCreate xmlTableCreate = new XmlTableCreate(); #endregion #region открываем шаблон string xmlFile = File.ReadAllText(templatePath); XmlDocument document = new XmlDocument(); document.LoadXml(xmlFile); #endregion #region старый вариант /* * List<zColumnTable> columnListWithUniqueMark = FindColumnsWithUniqueMarkExist(applicationId); * foreach (zColumnTable currentColumn in columnListWithUniqueMark) * { * xmlFile = xmlFile.Replace(currentColumn.UniqueMark, FindValue(currentColumn, applicationId)); * }*/ #endregion XmlNode sectNode = FindNode(document.ChildNodes, "wx:sect"); //нам нужен список того в файле что нужно заменить) // пока что 2 вхождения ищем //1) #Table* заменяем весь ноде после секции //2) #Line* заменяем только значение нода TagsToReplace tagsToReplaceClass = new TagsToReplace(); CreateXmlTable createXmlTableClass = new CreateXmlTable(); List <TagToReplace> tagsToReplaces = tagsToReplaceClass.GetTagsToReplace(document); //мы получили список того что нужно заменить #region поочереди заменяем foreach (TagToReplace currentTagToReplace in tagsToReplaces) { if (currentTagToReplace.ReplaceType == 2) { XmlNode newXmlNode = createXmlTableClass.GetXmlTable(document, currentTagToReplace, applicationId); if (newXmlNode != null) { document.ImportNode(newXmlNode, true); sectNode.AppendChild(newXmlNode); XmlNode lastNode = FindNodeByValue(sectNode.ChildNodes, currentTagToReplace.TagsNode.OuterXml); XmlNode nodeToReplace = FindAfterParentNode(sectNode, lastNode); if (nodeToReplace != null) { sectNode.ReplaceChild(newXmlNode, nodeToReplace); } } else { XmlNode childNode = FindNodeByValue(document.ChildNodes, currentTagToReplace.TagsNode.Value); childNode.Value = "Данные не внесены"; } } else if (currentTagToReplace.ReplaceType == 1) { XmlNode childNode = FindNodeByValue(document.ChildNodes, "ZLinez" + currentTagToReplace.ReplacemantList[0] + "Z"); zColumnTable currentColumn = FindColumnWithUniqueMark(applicationId, currentTagToReplace.ReplacemantList[0]); if (currentColumn != null) { childNode.Value = FindValue(currentColumn, applicationId); } if (childNode == null) { //childNode.Value = "Значение отсутствует"; } } } #endregion #region подчищаем и сохраняем в файл string newXmlFile = document.OuterXml; newXmlFile = newXmlFile.Replace("xmlns:w=\"w\"", "").Replace("xmlns:wx=\"wx\"", "").Replace("xmlns:wsp=\"wsp\"", ""); File.WriteAllText(newFilePath, newXmlFile); #endregion #region конвертируем его в другой формат Converter converter = new Converter(); converter.Convert(newFilePath, newFilePath, documentType); ConvertedFileExtension = converter.ConvertedFilaExtension; ConvertedFilePath = converter.ConvertedFilePath; #endregion return(true); }