如何搜索元素hving field ='field1'(注意 - 命名空间),这是我到目前为止所尝试的...
返回值应该是整个fieldPermissions元素。
/ [local-name()='个人资料'] / [local-name()='fieldPermissions'] / * [。='field1']返回
FIELD1
但我需要父元素(fieldPermissions)。
<?xml version='1.0' encoding='UTF-8'?>
<Profile xmlns='http://soap.sforce.com/2006/04/metadata'>
<fieldPermissions>
<editable>false</editable>
<field>field1</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>field2</field>
<readable>true</readable>
</fieldPermissions>
<fieldPermissions>
<editable>false</editable>
<field>field3</field>
<readable>false</readable>
</fieldPermissions>
</Profile>
答案 0 :(得分:0)
比较元素文本的xpath:
//*[local-name()="field"][text()="field1"]/..
虽然忽略了命名空间,但这个没有(我使用的是python lxml):
>>> print etree.tostring(tree.xpath('//x:field[text()="field1"]/..',
namespaces={'x': 'http://soap.sforce.com/2006/04/metadata'})[0],
pretty_print=True)
<fieldPermissions xmlns="http://soap.sforce.com/2006/04/metadata">
<editable>false</editable>
<field>field1</field>
<readable>true</readable>
</fieldPermissions>