一些用于 xml 的更简单的 perl dom 解析器的作者似乎不鼓励将它们用于混合内容,而支持 XML::LibXML。所以我现在开始学习 XML::LibXML 并且正在寻找常用的食谱示例。考虑从网络上读取 (x)html 文档并对其进行操作。(perl cookbook 2nd edition 现在已经有 10 年历史了,这里的覆盖范围相对较弱。)我发现我想从以下内容开始:
use XML::LibXML;
my $dom = XML::LibXML->load_xml( location => "fame-1-1.html", recover => 2 );
## recover=>2 is needed to allow valid html entities
初学者可以使用的好食谱示例包括
将 $dom 转换为 perl 数据结构。Data::Dumper($dom) 并没有给我带来什么特别有趣的东西。当然,我想转换两种方式:从和到。
漂亮地打印输出,也许有一些控制。
将 html 清理为 xhtml。
用逻辑进行转换。(有使用单个 dom 元素做事的好例子,但我认为更通用。)例如,我如何对两个连续的 dom 元素进行操作?我有一个 XAB。如果因此连续(例如,style="width:0"),我想向 sup 添加一个“类”或“样式”。
将所有类和样式分解为一个最小的模板样式表。
XML::LibXML 的其他“酷”和“简单”用途。
(留给后续编辑问题以响应有用的食谱)建议:
(a) 用递增的 id 枚举 <ul> 内的每个 <li>(例如,<li id="1"> ... <li id="2"> ...)。可以用多个元素来完成
(b) 迭代多个标签(例如,按出现的顺序打印出所有 li、dl 和 dt)
样品赞赏。
/iaw