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
Post a Comment