我想在某些条件下从XML获取属性值。我不知道这组值是如何检查XPATH条件的。
以下是我的XML格式:
<TTIDCData>
<CYAccountHide HideTable="False">
<fldAccountType Value="55" HideField="False" PrintValue="55" Description=""/>
<fldActNumber Value="502100" HideField="False" PrintValue="502100"/>
</CYAccountHide>
<CYAccountHide HideTable="False">
<fldAccountType Value="55" HideField="False" PrintValue="55" Description=""/>
<fldActNumber Value="502200" HideField="False" PrintValue="502200"/>
</CYAccountHide>
<CYAccountHide HideTable="False">
<fldAccountType Value="55" HideField="False" PrintValue="55" Description=""/>
<fldActNumber Value="502200" HideField="False" PrintValue="502200"/>
</CYAccountHide>
<CYAccountHide HideTable="False">
<fldAccountType Value="55" HideField="False" PrintValue="55" Description=""/>
<fldActNumber Value="502222" HideField="False" PrintValue="502200"/>
</CYAccountHide>
<person name="blair" address="502100"/>
<person name="blair" address="502200"/>
<person name="blair" address="502205"/>
<person name="blair" address="502200"/>
</TTIDCData>
我想估计哪个不匹配。条件为//CYAccountHide/fldActNumber/@Value != //person/@address
但这种情况不起作用。
基本上在我的XML中,我有//CYAccountHide/fldActNumber/@Value
的值,此属性为502100,502200,502201
,而//person/@address
属性的值为502100,502200
。我希望在xpath的帮助下只有502201
如果只验证一个值,那么// CYAccountHide / fldActNumber / @ Value!=&#39; 502100&#39;这个条件是有效的,但我希望用该XML标签验证值组。
答案 0 :(得分:2)
我想我已经理解了你现在需要的东西。使用以下XPath表达式
//CYAccountHide/fldActNumber/@Value[not(. = //person/@address)]
转换为
//CYAccountHide/fldActNumber/@Value Select all attributes named "Value" of
elements "fldActNumber" that themselves are
children of "CYAccountHide" elements.
[not(. = //person/@address)] but only return them if there is no "person"
element anywhere in the document that has an
"address" attribute with the same value as
the "Value" attribute.
,结果将是
Value="502201"