#!perl -W use XML::LibXML; # build accessors for attribute my@attrValue=qw(name datatypefamily datatypename onrewrite default info); my$Accessor=q# sub attribute_ATTRVAL { return (shift)->getAttribute ("ATTRVAL"); } #; foreach (@attrValue) {my$accessor=$Accessor;$accessor=~s/ATTRVAL/$_/g;eval($accessor)}; sub evalue { my$evalue; foreach ((shift)->findnodes("evalue")) {push @$evalue,$_->getAttribute ("name");} return $evalue; } sub element_parent { my$element=shift; if($element->parentNode->nodeName eq "element") {return $element->parentNode;} } sub attribute_size { return "list" if((shift)->parentNode->nodeName eq "list"); return "scalar"; } sub isuid { return (shift)->parentNode->nodeName eq "uid"; } sub attribute_uid_format { return (shift)->parentNode->getAttribute ("format")||""; } sub attrOnduplicate { return (shift)->parentNode->getAttribute ("onduplicate")||""; } sub attribute_element { return (shift)->parentNode->parentNode; } sub attribute_parent { return &element_parent(&attribute_element(shift)); } sub element_name { return &attribute_element(shift)->getAttribute ("name"); } sub element_attribute { return (shift)->findnodes("(uid/attribute|scalar/attribute|list/attribute)"); } sub parserXml { my $admsParser=shift; my $myElementArray; my $myElementHash; my @admsStructure=$admsParser->getDocumentElement->findnodes("//element"); foreach (@admsStructure) { my$element=$_; push @$myElementArray,$element; $myElementHash->{${element}->getAttribute("name")}=$element; } return ($myElementArray,$myElementHash); } 1