我正在进行数据迁移,我正在解析 html 并将其导出为 xml。当然,当 html 进入 xml 时,它会被转义,但为了验证解析是否正确,我正在解码括号以在 xml 中获取可读的 html 标签。但是,这些标签都是一起运行的,它仍然不是很可读。
有什么东西可以简单地缩进我拥有的标签结构吗?它既不是有效的 xml 也不是 html。我试过xmllint --format
and xmllint --htmlout
,但两者都在不同的地方窒息。
我可以避免手动执行此操作吗?
这是一个小例子:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<result><node><title>This would be the title</title><uri>/path/filename.jpg</uri><alt>Alt tag data</alt><body><p>Some text goes here.</body></node></result>
在实际数据中,里面的 html 标签<body>
都转义为<
and >
,但这太难用肉眼看解析是否正确。因此,我通过查找和替换将它们更改为等效的括号。但是它们仍然没有缩进,因此很难阅读。
两者都tidy
抱怨xmllint
缺少结束<p>
标签。在此数据中,有许多缺失或不匹配的标签。我知道这不是有效的 html 或 xml,但是我们稍后会清理 html,此时我只需要确保在正确的位置解析 html,这很难看到没有换行符或缩进。
为了修复上面的例子,我可以手动删除或关闭<p>
标签,但在实际数据中,有很多破损,修复标签只是为了让它解析格式化是一项不平凡的任务。在这个阶段,我试图避免手动按摩并以自动化的方式做事。
例如,对于这一个文件,tidy 报告了 65 个警告和 778 个错误。手动修复它们会浪费时间——我还不如开始自己缩进。我需要一些可以以非严格方式缩进的东西,并且不会关心不匹配的标签。