xpath question...

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • bruce

    #1

    xpath question...

    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.pars eString(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.Att ribute 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


  • John J. Lee

    #2
    Re: xpath question...

    "bruce" <bedouglas@eart hlink.netwrites :
    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.pars eString(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.Att ribute 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.Att ribute 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

    Comment

    Working...