删除 Markdown 中的 HTML 个元素
Remove HTML elements inside Markdown
目标
将带有 HTML 的 Markdown 文件转换为纯 Markdown
代码:in.md
# Title
## Subtitle
### Sub-subtitle
<span><div>Line before image</div><div><br></div><div><img src="img.png" width=404 height=255><br></div><div><br></div><div>Line after image</div><div><br></div><div>Text</div></span><h1><span>Heading 1</span></h1><span><div>Text</div><div><br></div></span><h2><span>Heading 2</span></h2><span><div>Text</div></span><h3><span>Heading 3</span></h3><div><span>Text</span></div><div><span><br></span></div><span><div>Line before code</div><code><pre><code><div>Code line 1</div><div>Code line 2</div><div>Code line 3</div></code></pre></code><div><span style="">Line after code</span><br></div><div><span style=""><br></span></div><div><span style=""><a href="http://pandoc.org">Link</a></span></div><div><span style=""><br></span></div><div><ul><li>Unordered bullet 1<br></li><li>Unordered bullet 2<br></li></ul></div><div><span style=""><br></span></div><div><ol><li>Ordered bullet 1<br></li><li>Ordered bullet 2<br></li></ol></div><div><span style=""><br></span></div></span><blockquote style="margin:0 0 0 40px;border:none;padding:0px;"><span><div><span style="">Quote line 1</span></div></span><span><div><span style="">Quote line 2</span></div></span></blockquote><span><div><span style=""><br></span></div><div><span style="">Text</span></div><div><span style=""><br></span></div><div><i>Italic</i></div><div><i><br></i></div><div>Text</div><div></div></span>
Markdown text
More Markdown text
尝试次数
我尝试了一些 Pandoc 脚本:
尝试 1
pandoc -f markdown -t markdown_strict --atx-headers in.md -o out.md
添加了换行符
无转换
从结果中提取
<h3>
<span>H3</span>
</h3>
<span>txt</span>
<span><br></span>
和
<ul>
<li>
bullet<br>
</li>
<li>
list<br>
</li>
</ul>
运行 第二次对结果执行转换命令什么都不做。
尝试 2
pandoc -f markdown -t markdown_strict-native_divs-native_spans --atx-headers in.md -o out.md
结果
同上
尝试 3
pandoc -f markdown-markdown_in_html_blocks -t markdown_strict-native_divs-native_spans --atx-headers in.md -o out.md
结果
与上面相同,但换行符较少
尝试 4
pandoc -f markdown -t markdown_strict-native_divs-native_spans-raw_html --atx-headers in.md -o out.md
从结果中提取
删除所有 HTML 元素,但未应用 Markdown:
Heading 1
Text
Heading 2
Text
Heading 3
Text
和
Unordered bullet 1
Unordered bullet 2
Unordered bullet 3
其他
我无法调整 in.md
最初的生成方式。
Pandoc 不一定是解决方案的一部分。然而,使用 Pandoc 似乎是有意义的,因为 (1) 转换需要由 Azure DevOps 发布管道执行,并且 运行 一个简单的命令非常适合该工作流程,并且 (2) 所需的结果只是一个干净的降价文件.
我可以使用 Regex 编写解决方案脚本(如果没有其他解决方案有意义,我会这样做),但是如果 Pandoc 命令(或其他解决方案)完成它,那似乎不太容易出现我的人为错误.
感谢您的任何想法或建议。
我的建议是先将整个文档转换成HTML,然后再将结果转换成你想要的Markdown格式:
pandoc --from=markdown --to=html in.md | \
pandoc --from=html --to=markdown-raw_html-native_divs --output out.md
请注意,输入似乎包含无效的 HTML(例如,根据 HTML 标准,div
不得出现在 span
或 code
元素中), 所以嵌入的 HTML 并不完全代表它应该代表的意思。
人们还会注意到一些仅包含换行符的跨度,这使得输出看起来很难看。最好的解决方案是通过 pandoc filter.
删除它们
目标
将带有 HTML 的 Markdown 文件转换为纯 Markdown
代码:in.md
# Title
## Subtitle
### Sub-subtitle
<span><div>Line before image</div><div><br></div><div><img src="img.png" width=404 height=255><br></div><div><br></div><div>Line after image</div><div><br></div><div>Text</div></span><h1><span>Heading 1</span></h1><span><div>Text</div><div><br></div></span><h2><span>Heading 2</span></h2><span><div>Text</div></span><h3><span>Heading 3</span></h3><div><span>Text</span></div><div><span><br></span></div><span><div>Line before code</div><code><pre><code><div>Code line 1</div><div>Code line 2</div><div>Code line 3</div></code></pre></code><div><span style="">Line after code</span><br></div><div><span style=""><br></span></div><div><span style=""><a href="http://pandoc.org">Link</a></span></div><div><span style=""><br></span></div><div><ul><li>Unordered bullet 1<br></li><li>Unordered bullet 2<br></li></ul></div><div><span style=""><br></span></div><div><ol><li>Ordered bullet 1<br></li><li>Ordered bullet 2<br></li></ol></div><div><span style=""><br></span></div></span><blockquote style="margin:0 0 0 40px;border:none;padding:0px;"><span><div><span style="">Quote line 1</span></div></span><span><div><span style="">Quote line 2</span></div></span></blockquote><span><div><span style=""><br></span></div><div><span style="">Text</span></div><div><span style=""><br></span></div><div><i>Italic</i></div><div><i><br></i></div><div>Text</div><div></div></span>
Markdown text
More Markdown text
尝试次数
我尝试了一些 Pandoc 脚本:
尝试 1
pandoc -f markdown -t markdown_strict --atx-headers in.md -o out.md
添加了换行符
无转换
从结果中提取
<h3>
<span>H3</span>
</h3>
<span>txt</span>
<span><br></span>
和
<ul>
<li>
bullet<br>
</li>
<li>
list<br>
</li>
</ul>
运行 第二次对结果执行转换命令什么都不做。
尝试 2
pandoc -f markdown -t markdown_strict-native_divs-native_spans --atx-headers in.md -o out.md
结果
同上
尝试 3
pandoc -f markdown-markdown_in_html_blocks -t markdown_strict-native_divs-native_spans --atx-headers in.md -o out.md
结果
与上面相同,但换行符较少
尝试 4
pandoc -f markdown -t markdown_strict-native_divs-native_spans-raw_html --atx-headers in.md -o out.md
从结果中提取
删除所有 HTML 元素,但未应用 Markdown:
Heading 1
Text
Heading 2
Text
Heading 3
Text
和
Unordered bullet 1
Unordered bullet 2
Unordered bullet 3
其他
我无法调整
in.md
最初的生成方式。Pandoc 不一定是解决方案的一部分。然而,使用 Pandoc 似乎是有意义的,因为 (1) 转换需要由 Azure DevOps 发布管道执行,并且 运行 一个简单的命令非常适合该工作流程,并且 (2) 所需的结果只是一个干净的降价文件.
我可以使用 Regex 编写解决方案脚本(如果没有其他解决方案有意义,我会这样做),但是如果 Pandoc 命令(或其他解决方案)完成它,那似乎不太容易出现我的人为错误.
感谢您的任何想法或建议。
我的建议是先将整个文档转换成HTML,然后再将结果转换成你想要的Markdown格式:
pandoc --from=markdown --to=html in.md | \
pandoc --from=html --to=markdown-raw_html-native_divs --output out.md
请注意,输入似乎包含无效的 HTML(例如,根据 HTML 标准,div
不得出现在 span
或 code
元素中), 所以嵌入的 HTML 并不完全代表它应该代表的意思。
人们还会注意到一些仅包含换行符的跨度,这使得输出看起来很难看。最好的解决方案是通过 pandoc filter.
删除它们