我正在解析Markdown文档以获取一些要点,并希望保留该部分的层次结构。考虑以下示例输入文件,
a.md
---
title: "document of interest"
---
## First section
- item A1
- item A2
- item A3
## Second section
- item B1
- item B2
- item B3
我可以用例如commonmark和xml2如下,
library(commonmark)
library(xml2)
p <- paste(readLines('a.md'), collapse='\n')
xml <- commonmark::markdown_xml(p)
a <- xml2::read_xml(xml)
xml_text(xml_find_all(a,'.//d1:heading'))
xml_text(xml_find_all(a,'.//d1:item'))
但是我不确定将这些项目嵌套在其部分内的好策略,即生成一个嵌套列表,例如
list(list(section = "First section", items = c("item A1", "item A2", "item A3")),
list(section = "Second section", items = c("item B1", "item B2", "item B3")))
PS:据我所知,XML树没有在每个单独的部分中嵌套内容–它们在同一平面上。如果是这种情况,问题就变成了在出现标题和项目的地方对行号进行计数,并以此方式将项目分配给它们的部分。