Редагування Markdown через типізоване синтаксичне дерево
Aspose.HTML for .NET використовує MarkdownParser , щоб представити наявний MD-файл як MarkdownSyntaxTree . Застосунок C# може знаходити типізовані вузли, замінювати їхній вміст, вставляти чи видаляти структури документа та зберігати змінене дерево у форматі Markdown без попереднього перетворення на HTML.
Оновлення тексту абзацу Markdown на C#
Наступний приклад знаходить перший абзац у input.md, замінює його вбудований вміст і зберігає оновлене синтаксичне дерево в edited.md. Інші вузли документа верхнього рівня залишаються в дереві.
Код C# для редагування Markdown-файлу
using Aspose.Html.Toolkit.Markdown.Syntax;
using Aspose.Html.Toolkit.Markdown.Syntax.Parser;
MarkdownParser parser = new MarkdownParser();
// Parse the source file into a typed Markdown syntax tree
MarkdownSyntaxTree syntaxTree = parser.ParseFile("input.md");
// Find the first top-level paragraph
MarkdownSyntaxNode currentNode = syntaxTree.FirstChild;
ParagraphSyntaxNode paragraph = null;
while (currentNode != null)
{
if (currentNode is ParagraphSyntaxNode)
{
paragraph = (ParagraphSyntaxNode)currentNode;
break;
}
currentNode = currentNode.NextSibling;
}
if (paragraph != null)
{
// Replace the paragraph's existing inline content
while (paragraph.FirstChild != null)
{
paragraph.RemoveChild(paragraph.FirstChild);
}
MarkdownSyntaxFactory factory = syntaxTree.SyntaxFactory;
TextSyntaxNode text = factory.Text("Updated paragraph text.");
paragraph.AppendChild(text);
}
// Serialize the updated syntax tree back to Markdown
syntaxTree.Save("edited.md");
Кроки редагування Markdown на C#
- Створіть
MarkdownParserі викличтеParseFile(), щоб побудувати синтаксичне дерево Markdown. - Обходьте вузли верхнього рівня через
FirstChildіNextSibling, доки не знайдете потрібний типізований вузол. - Видаліть або замініть вміст цільового вузла за допомогою методів керування деревом, які надає Markdown Syntax API.
- Створіть коректні вузли заміни через
SyntaxFactoryі приєднайте їх до цільового вузла. - Викличте
Save(), щоб серіалізувати відредаговане дерево в MD-файл.
Можливості та межі редагування Markdown
- Редагування наявної структури Markdown. Працюйте з типізованими вузлами заголовків, абзаців, списків, посилань, виділення, блоків коду, таблиць та інших підтримуваних елементів Markdown.
- Точкові зміни. Обходьте синтаксичне дерево, щоб оновити вибраний вміст, вставити вузол у певну позицію, замінити дочірній вузол або видалити застарілий блок.
- Збереження моделі документа. Редагування AST змінює вузли, а не виконує необмежену заміну тексту. Збережений файл серіалізується зі зміненого синтаксичного дерева, тому його не слід вважати побайтовою копією джерела.
- Перевірка без змінення вмісту. Використовуйте посібник із розбору Markdown , якщо застосунку потрібно обійти AST або отримати структуровані дані без змінення документа.
- Спеціалізовані сценарії для інших завдань. Дивіться Створення Markdown на C# для нового документа, Збереження Markdown для прикладів збереження або Markdown у PDF , якщо потрібен відрендерений документ.
Документація та довідник API для редагування Markdown
У статті Редагування та змінення Markdown наведено приклади змінення заголовків, абзаців та елементів списку через AST. Посібник Розбір і обробка Markdown пояснює обхід вузлів і типізовані синтаксичні вузли. Підтримувані позначення Markdown і форми елементів описано в посібнику Синтаксис Markdown .
Установлення Aspose.HTML for .NET
Установіть Aspose.HTML for .NET з NuGet за допомогою .NET CLI:
dotnet add package Aspose.HTML
Також можна скористатися інтерфейсом диспетчера пакетів NuGet або виконати Install-Package Aspose.HTML у консолі диспетчера пакетів. Докладні інструкції наведено в
посібнику зі встановлення
. Щоб оцінити API без обмежень ознайомлювальної версії, запросіть
тимчасову ліцензію
.
Запитання про редагування Markdown
1. Навіщо редагувати Markdown через AST замість заміни рядків?
AST представляє заголовки, абзаци, списки, посилання та вбудоване форматування як окремі вузли. Це дає змогу змінити вибрану структуру, не замінюючи випадково такий самий текст в іншому місці й не пошкоджуючи навколишній синтаксис Markdown.
2. Чи змінює метод ParseFile() вихідний MD-файл?
Ні. Він створює в пам’яті синтаксичне дерево з вихідного файлу. Файл змінюється лише тоді, коли застосунок викликає Save() і записує дерево у вихідний шлях або інше місце.
3. Як редагувати Markdown у застосунку ASP.NET Core?
Використовуйте MarkdownParser у серверному коді, щоб розібрати MD-файл у MarkdownSyntaxTree, змініть потрібні синтаксичні вузли та викличте Save() для запису оновленого Markdown. Aspose.HTML надає API обробки документів, а застосунок ASP.NET Core забезпечує браузерний інтерфейс редагування, якщо він потрібен.
4. Чи буде відредагований Markdown-файл побайтово ідентичним поза зміненим текстом?
Не покладайтеся на побайтову ідентичність. API серіалізує синтаксичне дерево назад у Markdown, тому структура документа зберігається, але пробіли чи деталі форматування можуть нормалізуватися. Порівняйте збережений результат, якщо точне форматування джерела має значення.
5. Чи можна перетворити відредаговане дерево безпосередньо на PDF за допомогою Save()?
Ні. Метод MarkdownSyntaxTree.Save() записує результат у форматі Markdown. Спочатку збережіть відредагований MD-файл, а потім використовуйте сценарій конвертації Markdown, якщо кінцевим результатом має бути PDF чи інший відрендерений формат.
Пов’язані сценарії Markdown і редагування
Перейдіть до спеціалізованого завдання з Markdown або редагування документів.