[prev in list] [next in list] [prev in thread] [next in thread]
List: perl-xml
Subject: Re: Regarding XML::LibXML::Element
From: Jonathan Stowe <jns () gellyfish ! com>
Date: 2007-08-27 6:39:44
Message-ID: 1188196785.6635.42.camel () coriolanus ! gellyfish ! com
[Download RAW message or body]
On Mon, 2007-08-27 at 10:28 +0530, Karthick Radhakrishnan wrote:
> Bjoern & Jonathan,
> Thanks for your reply. Here is the detailed one.
> There is no module XML::LibXML::Element. Instead of package I said
> module. sorry for that.
>
> I'm trying to insert a new tag. See below xml
>
> The Error I got is
> "
> Can't locate object method "appendChild" via package
> "XML::LibXML::NodeList" at xmlCreate.pl line 34.
> "
>
> Code
> use strict;
> use warnings;
> use XML::LibXML;
>
> my $xmlFile = "library.xml";
> my $isbn = "076455106X";
>
> my $xmlObj = XML::LibXML->new();
> my $doc = $xmlObj->parse_file($xmlFile);
> my $book = $doc->findnodes("//book[isbn = '$isbn']");
>
In a scalar context (such as you have above) findnodes() returns an
XML::LibXML::NodeList object - irrespective of the number of nodes
found. If you are absolutely sure that you will only find one node with
your expression then you can do:
my $book = ($doc->findnodes("//book[isbn = '$isbn']"))[0];
(i.e putting the RHS in a list context and taking the first element of
the list or:
my $book = $doc->findnodes("//book[isbn = '$isbn']")->shift();
(i.e. shift() the first element off the XML::LibXML::NodeList )
/J\
--
Winners don't do de-tox
_______________________________________________
Perl-XML mailing list
Perl-XML@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic