Редактирование 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#

  1. Создайте MarkdownParser и вызовите ParseFile() , чтобы построить синтаксическое дерево Markdown.
  2. Перемещайтесь по узлам верхнего уровня через FirstChild и NextSibling, пока не найдете нужный типизированный узел.
  3. Удалите или замените содержимое целевого узла с помощью методов управления деревом, предоставляемых API синтаксиса Markdown.
  4. Создайте корректные узлы замены через SyntaxFactory и присоедините их к целевому узлу.
  5. Вызовите 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 или редактирования документов.