2010-07-06 6 views
2

Je le code XML suivant:Utilisez XPath pour sélectionner l'élément avec un certain jeton dans la valeur

 <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> 

En utilisant XPath je dois sélectionner l'élément CHARACTERISTICS_XX dont la valeur contient le jeton COLOR_ATTRIBUTE. Ce ne sera pas toujours caractéristiques_02. Merci pour l'aide. Je suis un noob total à XPath.

Répondre

6

Cela ressemble à son extrait d'un IDOC SAP, vous pouvez probablement la chance que les fieldnamed ne sont pas 6 caractères longues abréviations :)

La réponse donnée par spinon est correcte, s'il pourrait y avoir un autre élément qui contient le texte « COLOR_ATTRIBUTE », cela donnerait un match plus précis:

/ZMARA/*[starts-with(local-name(.), 'CHARACTERISTICS_')][contains(.,'COLOR_ATTRIBUTE')] 

une autre suggestion est pour éviter l'expression '//' si vous savez où l'élément ZMARA peut se produire, dans l'expression ci-dessus ZMARA ne serait recherché que comme un élément racine qui serait plus performant.

+0

Cela semble bon. Je vais l'utiliser. Et oui, il s'agit de données SAP IDOC. Merci pour l'aide. – mpenrow

3

Cela devrait fonctionner:

//ZMARA/*[contains(.,'COLOR_ATTRIBUTE')] 
+0

Merci pour l'aide. – mpenrow

Questions connexes