Редактирование 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, пока не найдете нужный типизированный узел. - Удалите или замените содержимое целевого узла с помощью методов управления деревом, предоставляемых API синтаксиса Markdown.
- Создайте корректные узлы замены через
SyntaxFactoryи присоедините их к целевому узлу. - Вызовите
Save(), чтобы сериализовать измененное дерево в MD-файл.
Возможности и ограничения редактирования Markdown
- Редактирование существующей структуры Markdown. Работайте с типизированными узлами заголовков, абзацев, списков, ссылок, внутристрочного форматирования, блоков кода, таблиц и других поддерживаемых элементов Markdown.
- Точечные изменения. Перемещайтесь по синтаксическому дереву, чтобы обновить выбранное содержимое, вставить узел в определенную позицию, заменить дочерний узел или удалить устаревший блок.
- Сохранение модели документа. Редактирование AST изменяет узлы, а не выполняет неограниченную замену текста. Сохраненный файл сериализуется из измененного синтаксического дерева, поэтому не следует считать его побайтовой копией исходного файла.
- Анализ без изменения содержимого. Используйте руководство Разбор Markdown , если приложению нужно обойти AST или извлечь структурированные данные без изменения документа.
- Отдельные сценарии для других задач. Перейдите к странице Создание Markdown на C# для нового документа, Сохранение Markdown для примеров сохранения или Markdown в PDF , если требуется визуализированный документ.
Документация и справочник API для редактирования Markdown
В статье Редактирование и изменение Markdown приведены примеры изменения заголовков, абзацев и элементов списков через AST. Руководство Разбор и обработка 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 или редактирования документов.