[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

need help to parse xml (foaf

Patrick Aljord

4/28/2007 4:43:00 PM

hey all,
I have a foaf.xml that looks like that:


<rdf:RDF xmlns:dc="http://purl.org/dc/elements/...
xmlns:foaf="http://xmlns.com/foaf/...
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax...
xmlns:rdfs="http://www.w3.org/2000/01/rdf-sch...
xmlns:xfn="http://gmpg.org/xfn/...
<foaf:Person rdf:about="http://myself.videntity.org/...
<foaf:name>myself</foaf:name>
<foaf:page>
<foaf:Document rdf:about="http://myself.videntity.... />
</foaf:page>
<foaf:nick>myself</foaf:nick>
<foaf:mbox rdf:resource="mailto:myself@gmail.com" />
<foaf:mbox_sha1sum>67b60b91fd6d4f68e32deae93956d36bc7c93c70</foaf:mbox_sha1sum>
<foaf:knows>
<foaf:Person rdf:about="http://bob.videntity.org/...
<foaf:name>bob</foaf:name>
<foaf:homepage rdf:resource="http://bob.videntity.... />
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person rdf:about="http://bill.videntity.org/...
<foaf:name>bill</foaf:name>
<foaf:homepage rdf:resource="http://bill.videntity.... />
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>


I put all this into a string @f and then I create a doc:

doc=Document.new(@f.body)
@foaffriends=doc.root


I'm trying to get the names of all my friends:
"bill" and "bob"

If I do:

@foaffriends[1].elements['foaf:knows'][1].elements['foaf:name']


I get "bob" but I can't figure out how to get "bill".
I tried:


@foaffriends[1].elements['foaf:knows'][2].elements['foaf:name']


but it returned nil.

Any idea how to get all my friends name?

thanx in advance

Pat

1 Answer

Gavin Kistner

4/28/2007 10:20:00 PM

0

On Apr 28, 10:43 am, "Patrick Aljord" <patc...@gmail.com> wrote:
> hey all,
> I have a foaf.xml that looks like that:
[snip]
> I'm trying to get the names of all my friends:
> "bill" and "bob"

require 'rexml/document'

doc = REXML::Document.new( DATA.read )
p doc.each_element( '//foaf:knows/foaf:Person/foaf:name/text()' ){}
#=> ["bob", "bill"]

__END__
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/...
xmlns:foaf="http://xmlns.com/foaf/...
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax...
xmlns:rdfs="http://www.w3.org/2000/01/rdf-sch...
xmlns:xfn="http://gmpg.org/xfn/...
<foaf:Person rdf:about="http://myself.videntity.org/...
<foaf:name>myself</foaf:name>
<foaf:page>
<foaf:Document rdf:about="http://myself.videntity.... /
>
</foaf:page>
<foaf:nick>myself</foaf:nick>
<foaf:mbox rdf:resource="mailto:mys...@gmail.com" />
<foaf:mbox_sha1sum>67b60b91fd6d4f68e32deae93956d36bc7c93c70</
foaf:mbox_sha1sum>
<foaf:knows>
<foaf:Person rdf:about="http://bob.videntity.org/...
<foaf:name>bob</foaf:name>
<foaf:homepage rdf:resource="http://
bob.videntity.org/" />
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person rdf:about="http://bill.videntity.org/...
<foaf:name>bill</foaf:name>
<foaf:homepage rdf:resource="http://
bill.videntity.org/" />
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>