मैं मेनू के भीतर कुछ नोड्स को बाहर करने के लिए XPath का उपयोग कर रहा हूं। मैं एक सरणी में पहचाने गए नोड्स को बाहर करने के लिए इस पर विस्तार करना चाहता हूं।मैं string.Format के भीतर सरणी मानों का संदर्भ कैसे दूं?
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));
मैं चाहता क्या एक सरणी में menuId और कई अन्य लोगों की दुकान और फिर संदर्भ लेने के लिए है:
इस आईडी 2905 जिसका प्रकार के साथ मेनू में सभी नोड्स निकालने का कार्य करता सामग्री नहीं है String.Format समारोह
कुछ की तरह भीतर सरणी:
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));
किसी भी सलाह बहुत सराहना की जाएगी! -
टा नाथन
संपादित उदाहरण एक्सएमएल
<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>
अच्छा प्रश्न, +1। एक पूर्ण और आसान समाधान के लिए मेरा जवाब देखें। :) –
क्लासिक "अनुक्रम में मौजूद" XPath 1.0 अभिव्यक्ति के लिए मेरा उत्तर देखें। –