FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » PHP5 DOM extension - using firstChild
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
PHP5 DOM extension - using firstChild [message #177541] Sun, 08 April 2012 21:17 Go to next message
Denis[1] is currently offline  Denis[1]
Messages: 2
Registered: April 2012
Karma: 0
Junior Member
I have a script that uses xpath to retrieve an element using the PHP5
DOM extension and I want to delete all of the children of this
element. I use hasChildNodes and firstChild to do this. Here is my
script:

$xpath = new DOMXPath($doc);
$query = "//invitee[@id=\"$id\"]";
$nodelist = $xpath->query($query);
$hndChild = $nodelist->item(0);
print get_class($hndChild);

while($hndChild->hasChildNodes()) {
print $hndChild->firstChild->nodeValue;
$toGo = $hndChild->firstChild(); <-- failing statement
$hndChild->removeChild($toGo);
}

My get_class print verifies that I have a DOMElement. I have a print
statement that prints the nodeValue of the firstChild as the first
statement of my while loop and I get the correct result. But then my
next statement fails (on the first iteration) with this error message:

Fatal error: Call to undefined method DOMElement::firstChild() in
save.php on line 51

I can't figure out why this second firstChild statement (failing
statement above) fails. Seems like if firstChild is an undefined
method then the firstChild->nodeValue would also fail but it doesn't.
Can anyone enlighten me on what might be going on here?

Denis
Re: PHP5 DOM extension - using firstChild [message #177542 is a reply to message #177541] Sun, 08 April 2012 21:31 Go to previous messageGo to next message
Denis McMahon is currently offline  Denis McMahon
Messages: 634
Registered: September 2010
Karma: 0
Senior Member
On Sun, 08 Apr 2012 14:17:00 -0700, Denis wrote:

print $hndChild->firstChild->nodeValue;

accesses the firstChild *property* of $hndChild

$toGo = $hndChild->firstChild(); <-- failing statement

accesses the firstChild() *method* of $hndChild

if firstChild a property or a method?

in other words, is it a member variable or a member function?

Maybe:

$toGo = $hndChild->firstChild;

would work? I'm just speculating, based on the slight difference in the
two lines you indicate, "firstChild" vs "firstChild()".

Rgds

Denis McMahon
Re: PHP5 DOM extension - using firstChild [message #177543 is a reply to message #177542] Sun, 08 April 2012 21:58 Go to previous message
Denis[1] is currently offline  Denis[1]
Messages: 2
Registered: April 2012
Karma: 0
Junior Member
On Apr 8, 4:31 pm, Denis McMahon <denismfmcma...@gmail.com> wrote:
> On Sun, 08 Apr 2012 14:17:00 -0700, Denis wrote:
>
> print $hndChild->firstChild->nodeValue;
>
> accesses the firstChild *property* of $hndChild
>
> $toGo = $hndChild->firstChild();          <-- failing statement
>
> accesses the firstChild() *method* of $hndChild
>
> if firstChild a property or a method?
>
> in other words, is it a member variable or a member function?
>
> Maybe:
>
> $toGo = $hndChild->firstChild;
>
> would work? I'm just speculating, based on the slight difference in the
> two lines you indicate, "firstChild" vs "firstChild()".
>
> Rgds
>
> Denis McMahon

You are absolutely right. I don't know why I couldn't see that. I
knew firstChild was a property but this just never registered in my
mind. I made the change to a property reference and it works. Thanks
a bunch.

Denis
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: variable path lose slashs when used in an alert
Next Topic: Stats comp.lang.php (last 7 days)
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sun Dec 01 10:56:46 GMT 2024

Total time taken to generate the page: 0.02496 seconds