[XML-SIG] xbel_parse bug, and new xbel bug report/fix

Thomas B. Passin tpassin@idsonline.com
Wed, 15 Sep 1999 00:34:01 -0400


Uche,

 > xbel_parse.py does not properly convert "&"s in URLs to the & character 
  > xbel_parse.py does not properly convert "&"s in URLs to the & character 
 > entity.  I haven't checked its handling of < or " yet.

In using the xbel package in the 0.5.1 package against Internet Explorer bookmarks, I had the same problem.  Actually, the problem I had is not exactly in converting "&" characters.  msie_parse.py correctly replaces them with "&" entities.
But xbel2html then gives errors trying to process them.

Until this is fixed, I am using a text editor on the xbel file to replace all & and & with printable character groups.  After running xbel2html I am replacing them back to the correct values.  Of course you could do this with an awk or python script easily.

There is ANOTHER BUG in the package.  msie_parse.py does not nest folders correctly at all - the nesting level keeps increasing from folder to folder.

Here is a PATCH  to fix the problem:

in msie_parse.py, add the single line shown below: 

#---snip---
class MSIE:
    # internet explorer

    def __init__(self,bookmarks, path):
        self.bms=bookmarks
        self.root = None
        self.path = path

        self.__walk()

    def __walk(self, subpath=[]):
        # traverse favourites folder
        path = os.path.join(self.path, string.join(subpath, os.sep))
        for file in os.listdir(path):
            fullname = os.path.join(path, file)
            if os.path.isdir(fullname):
                self.bms.add_folder(file,None)
                self.__walk(subpath + [file])
# ======= Add the following line: =======
                self.bms.leave_folder()  # go back up a level when done with the children
# ==============================
            else:
                url = self.__geturl(fullname)
                if url:
                    self.bms.add_bookmark(os.path.splitext(file)[0],None,
                                          None,None,url)
#---snip---

This fixes the problem, and it works fine with empty folders too.  I haven't looked to see if the equivalent programs for Netscape, etc. bookmarks have similar problems.

Regards,

Tom Passin