Forum: Ruby need help to parse xml (foaf)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Patrick A. (Guest)
on 2007-04-28 20:43
(Received via mailing list)
hey all,
I have a foaf.xml that looks like that:


<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
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.org/" />
        </foaf:page>
        <foaf:nick>myself</foaf:nick>
        <foaf:mbox rdf:resource="mailto:removed_email_address@domain.invalid" />
        <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>


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
Gavin K. (Guest)
on 2007-04-29 02:25
(Received via mailing list)
On Apr 28, 10:43 am, "Patrick A." <removed_email_address@domain.invalid> 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/1.1/"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
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.org/" /
>
        </foaf:page>
        <foaf:nick>myself</foaf:nick>
        <foaf:mbox rdf:resource="mailto:removed_email_address@domain.invalid" />
        <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>
This topic is locked and can not be replied to.