# REXML, XPath and Namespace

**URL:** <https://www.ruby-forum.com/t/rexml-xpath-and-namespace/107005>\
**Category:** Ruby\
**Created:** [June 16, 2007, 12:30pm UTC](https://www.ruby-forum.com/t/rexml-xpath-and-namespace/107005 "2007-06-16T12:30:37Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![hinsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ed8c4c/32.png) [@hinsen](https://www.ruby-forum.com/u/hinsen)\
**Post date:** [June 16, 2007, 12:30pm UTC](https://www.ruby-forum.com/t/rexml-xpath-and-namespace/107005/1 "2007-06-16T12:30:37Z")

</div>

Hi.

I want to parse an xml file using REXML::XPath. I can easily navigate  
through the xml-tree with methods like ‘XPath.match(xml, “child::\*”)’  
and. But i can’t  
access nodes with the structure ‘prefix:name’. Even this call is not  
working (it doesn’t hit any node):

sub\_tags = REXML::XPath.match(xml, “/rss/channel/item/dc:date”, {  
“dc”=\>“[DCMI: DCMI Metadata Terms](http://purl.org/dc/elements/1.1/)” })

Do you know what i’am doing wrong?  
Thanks

\<?xml version="1.0" encoding="UTF-8"?\>

Zvents search for events matching within 60 miles of  
6  
[http://www.zvents.com/search?](http://www.zvents.com/search?)…  
60  
Zvents search for even Germany  
returesults.  
\<stream\_count\>2\</stream\_count\>  
  
MIR DETSTWA  
International Exhibition of Goods for  
Childg

  
  
[http://www.zvents.com/events/show/896719-MIR-DETSTWA](http://www.zvents.com/events/show/896719-MIR-DETSTWA)  
[http://www.zvents.com/events/show/896719-MIR-DETSTWA](http://www.zvents.com/events/show/896719-MIR-DETSTWA)  
dc:creatormBLAST\</dc:creator\>  
896719  
\<parent\_id\>\</parent\_id\>  
\<series\_count\>\</series\_count\>  
geo:lat50.12\</geo:lat\>  
geo:long8.68\</geo:long\>  
Wed, 30 May 2007 07:11:46 +0000  
dc:date2007-05-30T07:11:46+0000\</dc:date\>  
xCal:dtstart2007-10-03 00:00:00 +0000\</xCal:dtstart\>  
xCal:dtend2007-10-07 00:00:00 +0000\</xCal:dtend\>  
…

---

<div class="post-metadata">

**Author:** ![hinsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ed8c4c/32.png) [@hinsen](https://www.ruby-forum.com/u/hinsen)\
**Post date:** [June 21, 2007, 6:56pm UTC](https://www.ruby-forum.com/t/rexml-xpath-and-namespace/107005/2 "2007-06-21T18:56:10Z")

</div>

On 6/16/07, hinsen [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Even this call is not  
> working (it doesn’t hit any node):

This seemed to work for me:  
require ‘rexml/document’  
=\> true

INPUT = \<\<INPUT\_XML  
  
  
Zvents search for events matching within 60 miles of  
6  
  
Wed, 30 May 2007 07:11:46 +0000  
dc:date2007-05-30T07:11:46+0000\</dc:date\>  
  
  
  
INPUT\_XML  
=\> “\<rss xmlns:geo="[http://www.w3.org/2003/01/geo/wgs84\_pos#\](http://www.w3.org/2003/01/geo/wgs84_pos#%5C)”  
version="2.0"\nxmlns:dc="[http://purl.org/dc/elements/1.1/\"\nxmlns:xCal=\"urn:ietf:params:xml:ns:xcal\](http://purl.org/dc/elements/1.1/%5C%22%5Cnxmlns:xCal=%5C%22urn:ietf:params:xml:ns:xcal%5C)“\>\n  
\n Zvents search for events matching within 60  
miles of 6\n \n Wed, 30 May 2007  
07:11:46 +0000\n  
dc:date2007-05-30T07:11:46+0000\</dc:date\>\n \n  
 \n \n”

xml = REXML::Document.new(INPUT)  
=\> … \</\>

a = REXML::XPath.match(xml, “/rss/channel/item/dc:date”, {  
“dc”=\>“[DCMI: DCMI Metadata Terms](http://purl.org/dc/elements/1.1/)” })  
=\> [dc:date … \</\>]

a.to\_s  
=\> “dc:date2007-05-30T07:11:46+0000\</dc:date\>”
