我有以下XML:
<ZMARA SEGMENT="1">
<MATERIAL>000000000030001004</MATERIAL>
<PRODUCT_GROUP>14000IAA</PRODUCT_GROUP>
<PRODUCT_GROUP_DESC>HER 30 AR NEW Size</PRODUCT_GROUP_DESC>
<CLASS_CODE>I046</CLASS_CODE>
<CLASS_CODE_DESC>Heritage 30</CLASS_CODE_DESC>
<CHARACTERISTICS_01>,001,PLANNING_ALERT_PERCENTAGE, 50.000,PLANNI</CHARACTERISTICS_01>
<CHARACTERISTICS_02>X,001,COLOR_ATTRIBUTE,Weathered Wood,WEWD,Col</CHARACTERISTICS_02>
<CHARACTERISTICS_03>,001,ARMA_UOM,SALES SQUARE,SSQ,ARMA UNIT OF M</CHARACTERISTICS_03>
<CHARACTERISTICS_04>,001,ARMA_A_CATEGORY,05-Below 260 Lam/Multi-l</CHARACTERISTICS_04>
</ZMARA>
使用XPath我需要选择其值包含COLOR_ATTRIBUTE标记的CHARACTERISTICS_XX元素。它并不总是features_02。谢谢您的帮助。我是XPath的总菜鸟。
答案 0 :(得分:6)
这看起来像是从sap idoc中获取的,你可能很幸运,fieldnamed不是6个字符长的缩写:)
spinon给出的答案是正确的,但是如果可能有另一个元素包含文本'COLOR_ATTRIBUTE',这将给出更具体的匹配:
/ZMARA/*[starts-with(local-name(.), 'CHARACTERISTICS_')][contains(.,'COLOR_ATTRIBUTE')]
另一个建议是如果你知道ZMARA元素可以出现在哪里,就避免使用'//'表达式,在上面的表达式中,ZMARA只会被搜索为更高效的根元素。
答案 1 :(得分:3)
这应该有效:
//ZMARA/*[contains(.,'COLOR_ATTRIBUTE')]