我有一個XML數據如下Perl的哈希使用的libxml
<type>
<data1>something1</data1>
<data2>something2</data2>
</type>
<type>
<data1>something1</data1>
<data2>something2</data2>
</type>
<type>
<data1>something1</data1>
</type>
如可以看到的,子節點DATA2有時不存在。
我已經使用this作爲指導來創建下面的代碼
my %hash;
my $parser = XML::LibXML->new();
my $doc = $parser->parse_file($file_name);
my @nodes = $doc->findnodes("/type");
foreach my $node(@nodes)
{
my $key = $node->getChildrenByTagName('data1');
my $value = $node->getChildrenByTagName('data2');
$hash{$key} = $value;
}
後來,我用這哈希生成基於一個事實,更多的數據,如果孩子節點DATA2存在或不存在。
我使用ne
操作者假設在%hash
該數據是字符串的鍵值對,並且當data2
不存在時,Perl的插入空間中的散列值(I已打印該散列並發現,只有空間被打印爲一個值)
但是,我結束了以下編譯錯誤。
Operation "ne": no method found,
left argument in overloaded package XML::LibXML::NodeList,
right argument has no overloaded magic at filename.pl line 74.
我該如何解決這個問題?當我們有時一個節點不會在那裏時,什麼是最好的數據結構來存儲這些數據?
這就解釋了它。我將不得不更新我的libXML第三方庫。 – Recker
@Recker,它是需要更新的Perl模塊,而不是libxml庫 – ikegami