通过类型化语法树编辑 Markdown

Aspose.HTML for .NET 使用 MarkdownParser 将现有 MD 文件表示为 MarkdownSyntaxTree 。C# 应用程序可以定位类型化节点、替换其内容、插入或删除文档结构,并将修改后的树保存为 Markdown,无需先将其转换为 HTML。


使用 C# 更新 Markdown 段落文本

以下示例在 input.md 中查找第一个段落,替换其内联内容,并将更新后的语法树保存到 edited.md。其他顶级文档节点仍保留在树中。

用于编辑 Markdown 文件的 C# 代码

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");

使用 C# 编辑 Markdown 的步骤

  1. 创建 MarkdownParser ,并调用 ParseFile() 构建 Markdown 语法树。
  2. 通过 FirstChild 和 NextSibling 遍历顶级节点,直到找到所需的类型化节点。
  3. 使用 Markdown Syntax API 提供的树操作方法删除或替换目标节点内容。
  4. 通过 SyntaxFactory 创建有效的替换节点,并将其附加到目标节点。
  5. 调用 Save() ,将编辑后的树序列化为 MD 文件。

Markdown 编辑功能与适用范围

  • 编辑现有 Markdown 结构。 处理标题、段落、列表、链接、强调、代码块、表格及其他受支持 Markdown 元素的类型化节点。
  • 进行定向更改。 遍历语法树以更新选定内容、在指定位置插入节点、替换子节点或删除过时的块。
  • 保留文档模型。 AST 编辑修改节点,而不是执行不受限制的文本替换。保存的文件由修改后的语法树序列化生成,不应视为源文件的逐字节副本。
  • 在不更改内容的情况下检查文档。 当应用程序需要遍历 AST 或提取结构化数据而不修改文档时,请使用 Markdown 解析指南 。
  • 为其他任务使用专用工作流。 新建文档请参阅 使用 C# 创建 Markdown ,专注于保存的示例请参阅 保存 Markdown ,需要渲染文档时请参阅 Markdown 转 PDF 。

Markdown 编辑文档和 API 参考

阅读 编辑和修改 Markdown ,了解通过 AST 更改标题、段落和列表项的示例。 解析和处理 Markdown 指南说明节点遍历和类型化语法节点。有关受支持的 Markdown 表示法和元素形式,请参阅 Markdown 语法 指南。


安装 Aspose.HTML for .NET

使用 .NET CLI 从 NuGet 安装 Aspose.HTML for .NET :

dotnet add package Aspose.HTML

您也可以使用 NuGet 包管理器界面,或在包管理器控制台中运行 Install-Package Aspose.HTML。有关配置详情,请参阅 安装指南 ;如需不受评估版限制地测试 API,请申请 临时许可证 。


Markdown 编辑常见问题

1. 为什么要通过 AST 编辑 Markdown,而不是替换字符串?

AST 将标题、段落、列表、链接和内联格式识别为独立节点。这样,应用程序可以更改选定结构,而不会误替换其他位置的相同文本,也不会破坏周围的 Markdown 语法。

2. 方法 ParseFile() 会修改源 MD 文件吗?

不会。它根据源文件创建内存中的语法树。只有当应用程序调用 Save() 并将该树写入原路径或其他目标时,文件才会更改。

3. 如何在 ASP.NET Core 应用程序中编辑 Markdown?

在服务器端代码中使用 MarkdownParser 将 MD 文件解析为 MarkdownSyntaxTree,修改所需语法节点,然后调用 Save() 写入更新后的 Markdown。Aspose.HTML 提供文档处理 API;需要基于浏览器的编辑界面时,由 ASP.NET Core 应用程序提供该界面。

4. 编辑后的 Markdown 文件在更改文本之外会保持逐字节相同吗?

不要依赖字节级一致性。API 会将语法树重新序列化为 Markdown,因此文档结构仍然可用,但空白或格式细节可能会被规范化。如果源格式必须完全一致,请比较保存后的输出。

5. 可以使用 Save() 将编辑后的树直接转换为 PDF 吗?

不可以。MarkdownSyntaxTree.Save() 方法写入 Markdown 输出。请先保存编辑后的 MD 文件;如果最终结果必须是 PDF 或其他渲染格式,再使用 Markdown 转换工作流。

相关 Markdown 与编辑工作流

继续执行专门的 Markdown 或文档编辑任务。