c# - How do I reference array values within string.Format? -


i using xpath exclude nodes within menu. want expand on exclude nodes identified within array.

this works exclude nodes in menu id 2905 type not content:

xmlnodelist nextlevelnodelist = currentnode                                    .selectnodes(string                                                    .format("                                            menu[not(menuid = 2905)]                                               /item[                                                  itemlevel = {0}                                                      ,                                                   itemtype != 'javascript'                                                ] |                                             menu[menuid = 2905]                                               /item[                                                  itemlevel = {0}                                                      ,                                                  itemtype = 'content'                                                ]", ilevel)); 

what i'd store menuid , several others in array , reference array within string.format function

something like:

int[] excludesubmenus = {2905, 323}; xmlnodelist nextlevelnodelist = currentnode                                    .selectnodes(string                                                    .format("                                          menu[not(menuid in excludesubmenus)]                                             /item[                                                itemlevel={0}                                                    ,                                                 itemtype != 'javascript'                                              ] |                                           menu[menuid in excludesubmenus]                                             /item[                                                itemlevel={0}                                                    ,                                                 itemtype='content'                                              ]", ilevel)); 

any advice appreciated!

ta nathan

edit - include example xml

<item>     <itemid>322</itemid>      <itemtype>submenu</itemtype>      <itemlevel>2</itemlevel>      <menu>         <menuid>322</menuid>          <menulevel>2</menulevel>          <item>             <itemid>2905</itemid>              <itemtype>submenu</itemtype>              <itemlevel>3</itemlevel>              <menu>                 <menuid>2905</menuid>                  <menulevel>3</menulevel>                  <item>                     <itemid>19196</itemid>                      <itemtype>content</itemtype>                      <itemlevel>4</itemlevel>                  </item>                 <item>                     <itemid>19192</itemid>                      <itemtype>submenu</itemtype>                      <itemlevel>4</itemlevel>                  </item>             </menu>         </item>         <item>             <itemid>2906</itemid>              <itemtype>submenu</itemtype>              <itemlevel>3</itemlevel>              <menu>                 <menuid>323</menuid>                  <menulevel>3</menulevel>                  <item>                     <itemid>2432</itemid>                      <itemtype>content</itemtype>                      <itemlevel>4</itemlevel>                  </item>                 <item>                     <itemid>12353</itemid>                      <itemtype>submenu</itemtype>                      <itemlevel>4</itemlevel>                  </item>             </menu>         </item>     </menu> </item> 

use:

int[] excludesubmenus = {2905, 323};  string notexpr = string.empty;  for(int i=0; < excludesubmenus.length; i++)    {     notexpr += string.format("not(menuid={0})", excludesubmenus[i]);      if(i != excludesubmenus.count-1)        notexpr += " , ";    }    xmlnodelist nextlevelnodelist =      currentnode.selectnodes(        string.format("//menu[menuid in excludesubmenus]/item                               [itemlevel={1} , not(itemtype='javascript')]",                       notexpr, ilevel)                      );  

do note: in above code strings have been split different lines enhance readability. in ypur code must not split string , or use string + (concatenation) operator achieve same effect.


Comments

Popular posts from this blog

javascript - Enclosure Memory Copies -

php - Replacing tags in braces, even nested tags, with regex -