您的XML不符合規範,因此解析器無法按原樣處理它。主要問題有:
- XML是大小寫敏感的,所以
Item
別的東西比item
- 關閉標籤用斜槓開始,而不是反斜線
- 應該有頂級元素
解決這些問題,這段代碼的工作原理如下:
use strict; use warnings;
use XML::Twig;
my $data = <<END_DATA;
<items>
<item>
<data1> data1 </data1>
<data2> data2 </data2>
</item>
<item>
<data1> data1 </data1>
<data2> data2 </data2>
</item>
</items>
END_DATA
my $t = XML::Twig->new(
twig_handlers => {
'item' => sub {
# process each item and print contents of dataN elements
print
$_->first_child_trimmed_text('data1'), "\t",
$_->first_child_trimmed_text('data2'),"\n";
},
},
)->parse($data);
來源
2011-08-01 19:23:34
bvr
這是不正確的XML,不能被標準化由XML解析器sed。如果您始終將「<\element>」更改爲「」,則無問題。閱讀http://search.cpan.org/~mirod/XML-Twig-3.38/Twig.pm後,你有什麼嘗試? – RedGrittyBrick
-1聲稱它不是XML時是XML。 – tadmc