0

如果我有表单的 HTML

<ol>
    <li>Cheeses
        <ol>
            <li>Red Leicester</li>
            <li>Cheddar</li>
        </ol>
    <li>Wines
        <ol>
            <li>Burgundy</li>
            <li>Beaujolais</li>
        </ol>
</ol>

我想把它解析成一个类似的结构

{"Cheeses":["Red Leicester", "Cheddar"], "Wines":["Burgundy", "Beaujolais"]}

有很多关于如何使用 HTML::TreeBuilder 或 Mojo::DOM 等模块来解析 HTML 的“教程”,但它们似乎总是依赖于使用“id=”或“class=”标签。我要解析的 HTML 没有任何 ID 标签或其他属性。我怎样才能做到这一点?

4

1 回答 1

1

我只有 Mojo::DOM 方面的经验,诚然,您可能会找到一个更好的模块来将您的 XML 转换为数据结构。如果您使用的是 Mojo::DOM,您可能需要查看 Mojo::DOM 对象下的树结构:

#!/usr/bin/env perl

use strict;
use warnings;

use Mojo::DOM;
use Data::Dumper;

my $dom = Mojo::DOM->new(<<'END');
<ol>
    <li>Cheeses
        <ol>
            <li>Red Leicester</li>
            <li>Cheddar</li>
        </ol>
    <li>Wines
        <ol>
            <li>Burgundy</li>
            <li>Beaujolais</li>
        </ol>
</ol>
END

print Dumper $dom->tree;

稍微按摩一下,你就可以把它变成你想要的形式。也许有人有一个更直接地从 HTML(可能实际上是 XML)到结构的模块。

于 2013-01-30T04:36:05.327 回答