【发布时间】:2013-07-05 00:53:19
【问题描述】:
我有一个元素数组,它们基本上是 HTML 标签。下面是一个例子
<L>
<LI>
<LI_Label>Label1</LI_Label>
<LI_Title>Title1</LI_Title>
</LI>
<LI>
<LI_Label>Label2</LI_Label>
<LI_Title>Title2</LI_Title>
</LI>
<LI>
<LI_Label>Label3</LI_Label>
<LI_Title>Title3</LI_Title>
</LI>
</L>
我试图仅提取 LI_Title 元素并将它们存储到一个单独的数组中,然后我想将其连接成 1 个完整的字符串。对于提取和存储,我使用以下脚本。但是,当我打印数组时,整个 HTML 块都在 Found_LI 数组中,而不仅仅是 LI_Title 元素,正如我所期望的那样。希望这里有人能指出我在下面做错了什么?
foreach (@po_siblings)
{
if ($_ =~ /LI_Title/)
{
push(@found_LI,$_);
}
}
print "@found_LI\n";
【问题讨论】:
-
问题是
@po_siblings不包含您认为的内容。你认为它是一个每行一个元素的数组,但它的元素实际上比这更大。 (也许甚至整个事情都只是一个元素?) -
最简单的解决方法是将整个
if语句替换为push @found_LI, m/<LI_Title>.*?<\/LI_Title>/g之类的内容。 -
我建议使用 HTML 解析器。 stackoverflow.com/questions/4598162/html-parsing-in-perl
-
@raukh:非常感谢。那行得通。
标签: perl