Estoy usando XPath para excluir ciertos nodos dentro de un menú. Quiero ampliar esto para excluir los nodos identificados dentro de una matriz.¿Cómo hago referencia a valores de matriz dentro de string.Format?
Esto funciona para excluir todos los nodos en el menú con id 2905 cuyo tipo no es contenido:
XmlNodeList nextLevelNodeList = currentNode
.SelectNodes(string
.Format("
Menu[not(MenuId = 2905)]
/Item[
ItemLevel = {0}
and
ItemType != 'Javascript'
] |
Menu[MenuId = 2905]
/Item[
ItemLevel = {0}
and
ItemType = 'content'
]", iLevel));
Lo que me gustaría es almacenar la MenuID y varios otros en una matriz y después hacer referencia a que matriz dentro de la función string.Format
Algo así como:
int[] excludeSubmenus = {2905, 323};
XmlNodeList nextLevelNodeList = currentNode
.SelectNodes(string
.Format("
Menu[not(MenuId in excludesubMenus)]
/Item[
ItemLevel={0}
and
ItemType != 'Javascript'
] |
Menu[MenuId in excludeSubMenus]
/Item[
ItemLevel={0}
and
ItemType='content'
]", iLevel));
Cualquier consejo sería muy apreciada!
ta Nathan
Editar - incluyen ejemplo 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>
Buena pregunta, +1. Vea mi respuesta para una solución completa y fácil. :) –
Compruebe mi respuesta para una clásica expresión "existe en secuencia" XPath 1.0. –