[utils] Use compat_xpath
parent
57f7e3c62d
commit
810c10baa1
|
@ -50,6 +50,7 @@ from .compat import (
|
||||||
compat_urllib_parse_urlparse,
|
compat_urllib_parse_urlparse,
|
||||||
compat_urllib_request,
|
compat_urllib_request,
|
||||||
compat_urlparse,
|
compat_urlparse,
|
||||||
|
compat_xpath,
|
||||||
shlex_quote,
|
shlex_quote,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -165,12 +166,7 @@ if sys.version_info >= (2, 7):
|
||||||
return node.find(expr)
|
return node.find(expr)
|
||||||
else:
|
else:
|
||||||
def find_xpath_attr(node, xpath, key, val=None):
|
def find_xpath_attr(node, xpath, key, val=None):
|
||||||
# Here comes the crazy part: In 2.6, if the xpath is a unicode,
|
for f in node.findall(compat_xpath(xpath)):
|
||||||
# .//node does not match if a node is a direct child of . !
|
|
||||||
if isinstance(xpath, compat_str):
|
|
||||||
xpath = xpath.encode('ascii')
|
|
||||||
|
|
||||||
for f in node.findall(xpath):
|
|
||||||
if key not in f.attrib:
|
if key not in f.attrib:
|
||||||
continue
|
continue
|
||||||
if val is None or f.attrib.get(key) == val:
|
if val is None or f.attrib.get(key) == val:
|
||||||
|
@ -195,9 +191,7 @@ def xpath_with_ns(path, ns_map):
|
||||||
|
|
||||||
def xpath_element(node, xpath, name=None, fatal=False, default=NO_DEFAULT):
|
def xpath_element(node, xpath, name=None, fatal=False, default=NO_DEFAULT):
|
||||||
def _find_xpath(xpath):
|
def _find_xpath(xpath):
|
||||||
if sys.version_info < (2, 7): # Crazy 2.6
|
return node.find(compat_xpath(xpath))
|
||||||
xpath = xpath.encode('ascii')
|
|
||||||
return node.find(xpath)
|
|
||||||
|
|
||||||
if isinstance(xpath, (str, compat_str)):
|
if isinstance(xpath, (str, compat_str)):
|
||||||
n = _find_xpath(xpath)
|
n = _find_xpath(xpath)
|
||||||
|
|
Loading…
Reference in New Issue