Hi,This is the code I used:

#main script
#!/usr/bin/perl
########################################

require "sms_lib.pl";

$doc=&MakeParser();
&MakeUser("1234",$doc);
&GetPasswd("1234",$doc);
&SetPasswd("1234","bla",$doc);

&PrintSTOUT($doc);
&PrintFile($doc);

#sms_lib.pl
#!/usr/bin/perl
#####################################################################
use XML::Xerces;
use XML::Xerces::DOMParse;

$XML_FILE="sms.xml";
$XML_NODE_ROOT="sms";
$XML_NODE_STUDENT="student";
$XML_NODE_MBR="mbr";
$XML_NODE_PASSWD="passwd";
$XML_NODE_NAME="ime";
$XML_NODE_SURNAME="prezime";
$XML_NODE_DEPARTMENT="smjer";
$XML_NODE_YEAR="godina";
$XML_NODE_BONUS="izborni";
$XML_NODE_TELEPHONE="tel";
$XML_NODE_SERVICE="sms_service";
$XML_TEST_FILE="out.xml";
$UNDEF="UNDEF";

sub GetPasswd   {
    my($mbr,$doc) = @_;
    my $root= $doc->getDocumentElement();
    my $studenti= $doc->getElementsByTagName($XML_NODE_STUDENT);
    my $n= $studenti->getLength();
    for (my $i=0; $i<$n; $i++){
        my $student = $studenti->item($i);
        my $passwd_l= $student->getElementsByTagName($XML_NODE_PASSWD);
        my $mbr_loc_l= $student->getElementsByTagName($XML_NODE_MBR);
        my $passwd= $passwd_l->item(0);
        my $mbr_loc= $mbr_loc_l->item(0);
        my $passwd_text= ($passwd->getFirstChild())->getNodeValue();
        my $mbr_loc_text= ($mbr_loc->getFirstChild())->getNodeValue();
        if ($mbr_loc_text == $mbr){
            return $passwd_text
        }
    }
    return 0;
}

sub SetPasswd {
    my($mbr,$passwd,$doc) = @_;
    my $root= $doc->getDocumentElement();
    my $studenti= $doc->getElementsByTagName($XML_NODE_STUDENT);
    my $n= $studenti->getLength();
    for (my $i=0; $i<$n; $i++){
        my $student = $studenti->item($i);
        my $mbr_loc_l= $student->getElementsByTagName($XML_NODE_MBR);
        my $mbr_loc= $mbr_loc_l->item(0);
        my $mbr_loc_text= ($mbr_loc->getFirstChild())->getNodeValue();
        my $passwd_loc=
($student->getElementsByTagName($XML_NODE_PASSWD))->item(0);
        if ($mbr_loc_text == $mbr){
            ($passwd_loc->getFirstChild())->setNodeValue($passwd);
            return ($passwd_loc->getFirstChild())->getNodeValue();
        }
    }
    return 0;
}

sub MakeUser    {
    my($mbr, $doc) = @_;
    my $root =$doc->getDocumentElement();
    my $user = $doc->createElement($XML_NODE_STUDENT);
    &_MakeMBR($doc,$user,$mbr);
    $root->appendChild($user);
    #test
    &PrintSTOUT($doc);
    }

sub MakeParser  {
    my $parser = XML::Xerces::DOMParser->new();
    $parser->setToCreateXMLDeclTypeNode(1);
    $parser->parse(XML::Xerces::LocalFileInputSource->new($XML_FILE));
    my $doc = $parser->getDocument();
    return $doc
}

sub PrintSTOUT  {
    my ($doc) = @_;
    XML::Xerces::DOMParse::unformat ($doc);
    XML::Xerces::DOMParse::format ($doc);
    XML::Xerces::DOMParse::print (\*STDOUT, $doc);
}

sub PrintFile   {
    my ($doc) = @_;
    my $string = $doc->serialize();
    open FP, $XML_TEST_FILE;
    print FP $string;

}

Now, PrintSTOUT works, but PrintFile does not.
I would be grateful if you helped...

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to