通过类型化语法树编辑 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 的步骤
- 创建
MarkdownParser,并调用ParseFile()构建 Markdown 语法树。 - 通过
FirstChild和NextSibling遍历顶级节点,直到找到所需的类型化节点。 - 使用 Markdown Syntax API 提供的树操作方法删除或替换目标节点内容。
- 通过
SyntaxFactory创建有效的替换节点,并将其附加到目标节点。 - 调用
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 或文档编辑任务。