Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Python 使用ElementTree查找节点-无效谓词_Python_Xml_Xpath_Elementtree - Fatal编程技术网

Python 使用ElementTree查找节点-无效谓词

Python 使用ElementTree查找节点-无效谓词,python,xml,xpath,elementtree,Python,Xml,Xpath,Elementtree,我对这个地区很陌生,所以我相信这是显而易见的。我试图更改python脚本,以便它以不同的方式查找节点,但我得到了一个“无效谓词”错误 它应该两次找到同一个节点,但第二次找到时会出错。以下是XML的摘录: <Diag id="53"> <Formatted>xyz</Formatted> <BaseName>HTTPHeaders</BaseName> <Col

我对这个地区很陌生,所以我相信这是显而易见的。我试图更改python脚本,以便它以不同的方式查找节点,但我得到了一个“无效谓词”错误

它应该两次找到同一个节点,但第二次找到时会出错。以下是XML的摘录:

<Diag id="53">
            <Formatted>xyz</Formatted>
            <BaseName>HTTPHeaders</BaseName>
            <Column>17</Column>

xyz
HttpHeader
17
我希望我没有削减太多。基本上,用“@id”找到它是可行的,但我想改为在那个BaseName标签上搜索


事实上,我想搜索标签的组合,这样我就有了一个更复杂的表达式,但我不能让简单的一个工作

问题中的代码在使用Python 3.7时有效。如果删除了谓词中等号前后的空格,那么它也适用于早期的Python版本

thingy = doc.find(".//File/Diag[BaseName='HTTPHeaders']")

请参阅。

我可以用Python 2.7重现错误,但不能用Python 3.7重现错误。“我有一个更复杂的表达式”—您可能想改用它;这是非常有限的。奇怪的是,我使用的是python 3。我必须得到一个精简的XML文件并发布一个完整的工作示例——或者在这样做的过程中,我会发现问题所在。我也会尝试不使用空格,以防万一!我会再打给你的。谢谢。但是您使用的是Python 3.7吗?空白问题在那个小版本中得到了修复,原来我在Linux机器上使用的是python 3.5(当我使用Windows时是3.7!)。你已经回答了我的问题,但我还有一个后续问题。查看我的原始脚本,我可以看到我只添加了空格来尝试解决原始问题:thingy=doc.find(“.//File/Diag[BaseName='HTTPHeaders'和MsgNum='1063'和Line='48']”)。即使没有空格,我也会得到一个错误。所以我一定是做错了“和”一点-我用这个作为我的信息来源-。也许我读错了信息?ElementTree只支持完整XPath的一个子集。
操作员不工作。看见
thingy = doc.find(".//File/Diag[BaseName='HTTPHeaders']")