xpath question...

B

bruce

hi...

i have the following section of test code where i'm trying to get the
attribute of a frame
<frame src="....">

i'm trying to print/get the src value. the xpath query that i have displays
the "src" attribute in the Xpather/Firefox plugin. however, i can't quite
figure out how to get the underlying value in my test app...

sxpath = "/html/frameset/frame[2]/attribute::src"
# s contains HTML not XML text
d = libxml2dom.parseString(s, html=1)

#get the tr list
tr1 = d.xpath(sxpath)

url = tr1[0]

#get the url/link >>semester page
#link = br.find_link(nr=1)

#url = link.url
print "link = ",url
sys.exit()

err output
link = <libxml2dom.Attribute object at 0xb7b7680c>

--------------------------------------

i'm not sure what i need to add to the line
url = tr1
to resolve the issue/error...

looking over google hasn't given any real pointers...


thanks

-bruce
 
J

John J. Lee

bruce said:
i have the following section of test code where i'm trying to get the
attribute of a frame
<frame src="....">

i'm trying to print/get the src value. the xpath query that i have displays
the "src" attribute in the Xpather/Firefox plugin. however, i can't quite
figure out how to get the underlying value in my test app...

sxpath = "/html/frameset/frame[2]/attribute::src"
# s contains HTML not XML text
d = libxml2dom.parseString(s, html=1)

#get the tr list
tr1 = d.xpath(sxpath)

url = tr1[0]

#get the url/link >>semester page
#link = br.find_link(nr=1)

#url = link.url
print "link = ",url
sys.exit()

err output
link = <libxml2dom.Attribute object at 0xb7b7680c>

--------------------------------------

i'm not sure what i need to add to the line
url = tr1
to resolve the issue/error...

It *looks* like "err output" is just a string you typed into your
message? If so, that's not "an error" in the usual sense (there's no
traceback): rather, it's just output you didn't expect.

When somebody what you wrote, though, they must go through the
following laborious thought process: Is that string part of the
literal text output by your program, or are you indicating that you
saw a traceback that contains the following line ("link = ...")? Or
is it something you just typed in to your message to indicate that the
result is unexpected to you? If there's a traceback, post the full
traceback. If that is the literal output, you should say so
explicitly, or make it clear through copy/paste of a shell session:

"""
$ my-test-prog.py
err output
link = <libxml2dom.Attribute object at 0xb7b7680c>
$
"""

Back to your problem: The output is not unexpected, though (though I
don't know libxml2dom). First, if you're bent on using XPath, you may
be better off with module lxml, which I think is a more recent and
friendlier wrapper of libxml2 / libxslt. Second, you're almost there:
you're just getting back an object representing the attribute, rather
than the string you're looking for. You simply need to ask the object
for its string representation. How that's done depends on the module,
but it looks like you have to call a method explicitly in this case (I
can't find the libxml2dom docs easily).


John
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,596
Members
45,143
Latest member
SterlingLa
Top