这是我的xpath:
<Unit>
<_unit_type>FSP</_unit_type>
<_logicalId>FSM1/FSP1</_logicalId>
</Unit>
<Unit>
<_unit_type>FSP</_unit_type>
<_logicalId>FSM1/FSP2</_logicalId>
</Unit>
所以我需要在len(root.findall(xpath_pattern)
时找到xpath_pattern = .//Unit[_unitType='FSP'][starts-with(_logicalId,'FSM1']
如果我的模式是.//Unit[_unitType='FSP']
,我的代码可以工作,并且我可以得到2的长度。但是我需要添加另一个限定符,因为我的xml文件要复杂得多。
我收到SyntaxError:使用此模式时谓词无效.//Unit[_unitType='FSP'][starts-with(_logicalId,'FSM1']
只需使用AND运算符即可添加所需的条件。
例如,如果您正在寻找特定的“单位”:
//Unit[_unit_type='FSP' AND contains(.,'S')][starts-with(_logicalid,'FSM1') AND contains(.,'FSP1')]
您也可以使用“ |”使用多个XPath。 Xpath1 | Xpath2 | Xpath3 | ...如果您要寻找与Unit不同的东西:
//Unit[_unit_type='FSP'][starts-with(_logicalid,'FSM1')]|//Entity[_unit_type='XYZ'][starts-with(_logicalid,'FSM1')]