Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Python XPath处理库支持';local-name()';功能_Xml_Xpath_Python 2.x - Fatal编程技术网

Xml Python XPath处理库支持';local-name()';功能

Xml Python XPath处理库支持';local-name()';功能,xml,xpath,python-2.x,Xml,Xpath,Python 2.x,在XSLT样式表中,我有如下表达式: //*[local-name()='record']/@*[local-name()='internalId'] ... <body> <plat:record rom:internalId='5'> ... 本地-name()函数用于避免使用前缀和名称空间。我将其用于XML,如下所示: //*[local-name()='record']/@*[local-name()='internalId'] ... <body

在XSLT样式表中,我有如下表达式:

//*[local-name()='record']/@*[local-name()='internalId']
...
<body>
  <plat:record rom:internalId='5'>
...
本地-name()函数用于避免使用前缀和名称空间。我将其用于XML,如下所示:

//*[local-name()='record']/@*[local-name()='internalId']
...
<body>
  <plat:record rom:internalId='5'>
...
。。。
...
获得“5”

我想知道,是否有一个Python库支持标准XPath,这样我就可以使用上面的表达式而无需任何修改。如果可能的话,我更喜欢标准Python库,而不是第三方。 请给我推荐一些。我会很感激使用它的小例子。 我正在使用Python2.x


提前谢谢你,莱恩说得对。以下是我解决问题的方法:

from lxml import etree

# ...

responseXmlRoot = etree.fromstring(response.content)
operationStatus = responseXmlRoot.xpath("//*[local-name()='status']/@*[local-name()='isSuccess']")
if not operationStatus or operationStatus[0] != 'true':
    errorDetails = responseXmlRoot.xpath("//*[local-name()='detail']/descendant::*/text()")
    raise Exception("Exception when trying to post user's credentials to NetSuitr. " + str(errorDetails[0]))

lxml支持XPath和local-name(),但您确实不应该忽略名称空间。它们在正确设计的XML中非常重要。非常感谢,这正是我想要的!这不是你应该解决问题的方式。听取Lie Ryan的其他建议并正确处理名称空间。很简单:(我鼓励你重新写你的答案。)