2009-11-13 66 views
1

我怎樣才能得到實際的屬性值,而不是XML::DOM::NamedNodeMap=HASH(0xa3246d4),而使用從XML :: DOM解析器的getAttribute功能如何使用perl中的XML :: DOM解析器解析xml時獲取屬性值?

代碼

my $parent = $doc->getElementsByTagName ("ParentTag")->item(0); 
     my @parent = $childnodes->getChildNodes(); 
     { 
      foreach my $parent(@parent) 
      { 
      if ($parent->getNodeType == ELEMENT_NODE) 
       { 
       print $parent->getNodeName; 
       print $parent->getAttributes; 
       } 
      } 
     } 

回答

1

的getAttributes的返回值看起來是一個XML::DOM::NamedNodeMap對象,所以你可以使用該對象通過名稱獲取屬性值,例如

my $nodemap = $parent->getAttributes; 
my $node = $nodemap->getNamedItem('foo'); 

$node,又將是一個對象,這將有自己的方法,並有自己的文檔。

有很多課程和閱讀他們所有的docs將有所幫助。如果它看起來太多了,你可能可以使用XML::Simple,這通常足夠好,直到它不夠好:-)

+0

謝謝jsoverson爲您的迴應。我在考慮XML :: Simple,但不知何故決定了XML :: DOM,因爲我之前使用過DOM解析器。 – Rachel 2009-11-14 01:07:34

+0

XML :: DOM現在還沒有真正維護。你嘗試過XML :: LibXML嗎?如果你想使用DOM,這可能是一個更好的選擇。 – mirod 2009-11-14 06:20:10

+0

我還沒有嘗試XML :: LibXML,但我一定會嘗試它,但最近它已決定使用SAX解析器,我猜想在SAX解析Perl中我們有XML :: SAX :: Intro和XML :: Parser :: PerlSAX – Rachel 2009-11-14 16:03:59