Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
REXML, XPath and Namespace
hinsen
6/16/2007 10:31:00 AM
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"=>"
http://purl.org/dc/elements/...
})
Do you know what i'am doing wrong?
Thanks
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:geo="
http://www.w3.org/2003/01/geo/wgs84_...
version="2.0"
xmlns:dc="
http://purl.org/dc/elements/...
xmlns:xCal="urn:ietf:params:xml:ns:xcal">
<channel>
<title>Zvents search for events matching within 60 miles of
6</title>
<link>
http://www.zvents.com/search?...<...
<ttl>60</ttl>
<description>Zvents search for even Germany
returesults.</description>
<stream_count>2</stream_count>
<item>
<title>MIR DETSTWA</title>
<description>International Exhibition of Goods for
Childg</description>
<summary></summary>
<phone></phone>
<guid>
http://www.zvents.com/events/show/896719-MIR-DETSTWA<...
<link>
http://www.zvents.com/events/show/896719-MIR-DETSTWA<...
<dc:creator>mBLAST</dc:creator>
<id>896719</id>
<parent_id></parent_id>
<series_count></series_count>
<geo:lat>50.12</geo:lat>
<geo:long>8.68</geo:long>
<pubDate>Wed, 30 May 2007 07:11:46 +0000</pubDate>
<dc:date>2007-05-30T07:11:46+0000</dc:date>
<xCal:dtstart>2007-10-03 00:00:00 +0000</xCal:dtstart>
<xCal:dtend>2007-10-07 00:00:00 +0000</xCal:dtend>
...
--
Posted via
http://www.ruby-...
.
1 Answer
Keith Fahlgren
6/21/2007 4:55:00 PM
0
On 6/16/07, hinsen <h.gildhoff@web.de> 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
<rss xmlns:geo="
http://www.w3.org/2003/01/geo/wgs84_...
version="2.0"
xmlns:dc="
http://purl.org/dc/elements/...
xmlns:xCal="urn:ietf:params:xml:ns:xcal">
<channel>
<title>Zvents search for events matching within 60 miles of 6</title>
<item>
<pubDate>Wed, 30 May 2007 07:11:46 +0000</pubDate>
<dc:date>2007-05-30T07:11:46+0000</dc:date>
</item>
</channel>
</rss>
INPUT_XML
=> "<rss xmlns:geo=\"
http://www.w3.org/2003/01/geo/...
\"
version=\"2.0\"\nxmlns:dc=\"
http://purl.org/dc/ele...
\"\nxmlns:xCal=\"urn:ietf:params:xml:ns:xcal\">\n
<channel>\n <title>Zvents search for events matching within 60
miles of 6</title>\n <item>\n <pubDate>Wed, 30 May 2007
07:11:46 +0000</pubDate>\n
<dc:date>2007-05-30T07:11:46+0000</dc:date>\n </item> \n
</channel> \n</rss> \n"
xml = REXML::Document.new(INPUT)
=> <UNDEFINED> ... </>
a = REXML::XPath.match(xml, "/rss/channel/item/dc:date", {
"dc"=>"
http://purl.org/dc/elements/...
})
=> [<dc:date> ... </>]
a.to_s
=> "<dc:date>2007-05-30T07:11:46+0000</dc:date>"
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
REXML, XPath and Namespace
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password