dom_document_get_element_by_id

php.internals

John Huntjens

22 years ago
Is this function working? Test program: $dom = new domDocument(); $dom->load("test.xml"); $node = $dom->getElementById("id1"); print_r($node); Test file: <?xml version="1.0" encoding="utf-8"?> <test> <el1 id="id1"/> <el2 id="id2"/> </test> It seems to me that always a emty object is returned?

Christian Stocker

22 years ago
On 9/8/03 5:11 PM, John Huntjens wrote:
> Is this function working?
yes. see: http://bugs.php.net/bug.php?id=17629 http://bugs.php.net/bug.php?id=16647 for details chregu
> > Test program: > > $dom = new domDocument(); > $dom->load("test.xml"); > $node = $dom->getElementById("id1"); > print_r($node); > > Test file: > > <?xml version="1.0" encoding="utf-8"?> > <test> > <el1 id="id1"/> > <el2 id="id2"/> > </test> > > It seems to me that always a emty object is returned? >
-- christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich phone +41 1 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71 http://www.bitflux.ch | chregu@bitflux.ch | gnupg-keyid 0x5CE1DECB

John Huntjens

22 years ago
> > Is this function working? > yes. > > see: > > http://bugs.php.net/bug.php?id=17629 > http://bugs.php.net/bug.php?id=16647 > > for details
I do not understand the workaround? I am using latest cvs php5 capitalizing the ID's to <?xml version="1.0" encoding="utf-8"?> <test> <el1 ID="id1"/> <el2 ID="id2"/> </test> gives no result. Should I define a DTD to find the ID's? Gr, John

Christian Stocker

22 years ago
On 9/8/03 5:25 PM, John Huntjens wrote:
>>>Is this function working? >> >>yes. >> >>see: >> >>http://bugs.php.net/bug.php?id=17629 >>http://bugs.php.net/bug.php?id=16647 >> >>for details > > > I do not understand the workaround? > I am using latest cvs php5
you have to define the ids with a DTD. there are no default "id"-attributes in the XML-specs. Add: <!DOCTYPE test [ <!ATTLIST el1 id ID #REQUIRED> <!ATTLIST el2 id ID #REQUIRED> ]> to your XML document, and it should work. or use XPath to access the nodes: "//@id='id1'" chregu
> > capitalizing the ID's to > > <?xml version="1.0" encoding="utf-8"?> > <test> > <el1 ID="id1"/> > <el2 ID="id2"/> > </test> > > gives no result. > > Should I define a DTD to find the ID's? > > Gr, > > John > > > >>chregu >> >> >>>Test program: >>> >>>$dom = new domDocument(); >>>$dom->load("test.xml"); >>>$node = $dom->getElementById("id1"); >>>print_r($node); >>> >>>Test file: >>> >>><?xml version="1.0" encoding="utf-8"?> >>><test> >>> <el1 id="id1"/> >>> <el2 id="id2"/> >>></test> >>> >>>It seems to me that always a emty object is returned? >>> >> >>-- >>christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich >>phone +41 1 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71 >>http://www.bitflux.ch | chregu@bitflux.ch | gnupg-keyid 0x5CE1DECB > >
-- christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich phone +41 1 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71 http://www.bitflux.ch | chregu@bitflux.ch | gnupg-keyid 0x5CE1DECB

Christian Stocker

22 years ago
On 9/8/03 5:55 PM, Christian Stocker wrote:
> > > On 9/8/03 5:25 PM, John Huntjens wrote: >
> > or use XPath to access the nodes: > "//@id='id1'"
öööhm ;) this should better be "//*[@id='id1']" AFAIK... chregu

John Huntjens

22 years ago
<snip>
> you have to define the ids with a DTD. there are no default > "id"-attributes in the XML-specs.
Ahh, that clarify's alot.
> Add: > <!DOCTYPE test [ > <!ATTLIST el1 id ID #REQUIRED> > <!ATTLIST el2 id ID #REQUIRED> > ]> > > to your XML document, and it should work.
Thanks for your quick answer, this quireled me al day!
> or use XPath to access the nodes: > "//@id='id1'"
Can you give me a pointer how to do that in php5, I thought that this was not implemented (yet)? Gr, John