public static void Debug_ExportCurrentArticleToXML(string xmlFileName) { using (XmlTextWriter writer = new XmlTextWriter(xmlFileName, Encoding.UTF8)) { writer.Formatting = Formatting.Indented; writer.Indentation = 4; Data.Article currentArticle = CurrentWorkspace.CurrentArticle; writer.WriteStartDocument(); writer.WriteStartElement("Article"); //< <Article> writer.WriteAttributeString("ExportDate", DateTime.Now.ToShortDateString()); writer.WriteAttributeString("Name", currentArticle.Name); writer.WriteAttributeString("Text", currentArticle.OriginalText.Text); foreach (var lang in CurrentWorkspace.TranslationLanguages) { writer.WriteStartElement("TranslationLanguage"); //< <TranslationLanguage> writer.WriteAttributeString("Code", lang.Code); foreach (var translation in currentArticle.GetTranslations(lang.Code)) { writer.WriteStartElement("Translation"); // <Translation> writer.WriteAttributeString("OriginalPhraseIndexes", Logic.TextInLanguage.GetPhraseIndexes(translation.OriginalPhrase)); writer.WriteAttributeString("TranslatedPhrase", translation.translatedPhrase); writer.WriteAttributeString("InfinitiveOriginalPhrase", translation.infinitiveTranslation.originalPhrase); writer.WriteAttributeString("InfinitiveTranslatedPhrase", translation.infinitiveTranslation.translatedPhrase); writer.WriteEndElement(); // </ Translation> } writer.WriteEndElement(); //< </TranslationLanguage> } writer.WriteEndElement(); //< </Article> writer.WriteEndDocument(); } }
// Открывает заданную по имени статью, то есть делает ее текущей (при этом происходит полная ее загрузка из бд, парсинг на синтаксическую разметку и так далее) // Если при этом какая-то статья была открыта, она закроется public void OpenArticle(string articleName) { if (CurrentArticleOpening != null) CurrentArticleOpening(m_currentArticle, EventArgs.Empty); if (articleName != null) { // Заданная статья должна существовать Debug.Assert(m_articleNames.Contains(articleName)); m_currentArticle = new Article(this, m_repository, articleName); } else m_currentArticle = null; if (CurrentArticleOpened != null) CurrentArticleOpened(m_currentArticle, EventArgs.Empty); }