2013-12-23 5 views
1

Здравствуйте, я работаю над поиском XmlDocumentВыберите один узел, используя дочерний узел, содержащий конкретный внутренний текст. XMLDocument

часть моего документ является

<Product ID="102166"> 
     <Name>Name1</Name> 
     <Mrp>220.0000</Mrp> 
     <Price>210.2800</Price> 
      <Cost>177.8700</Cost> 
     <Barcode>102166,10216610,8901786409990,9910216600011,10216620,9910216600202 
    </Barcode> 
</Product> 

Я хочу, чтобы выбрать один узел продукта из документа которого Артикул внутреннего текст содержит заданную строку

например, если я даю 8901786409990 в качестве входного выхода должен быть его родитель, т.е. Продукт с идентификатором 102166

Я пробовал следующее без успеха

string ItemCode="8901786409990 "; 
XmlNode node = doc.SelectSingleNode("/*/b:Product[contains(b:Barcode,'" + Itemcode1 + "')"); 

Это исключение для исключения '/*/b:Product[contains(b:,'8901786409990')' имеет недействительный токен.

Любая помощь?

+0

Это было по ошибке. Barcode и Itemcode такие же, но –

+0

попробовали, но разные исключения см. Ниже комментарий –

ответ

3

Вы пропускаете закрывающую скобку:

string ItemCode="8901786409990 "; 
XmlNode node = doc.SelectSingleNode("/*/b:Product[contains(b:Barcode,'" + Itemcode1 + "')]"); 

См дополнительный кронштейн здесь:

'/ */B: Продукт [содержит (б:' 8901786409990 ') ]'

+0

Теперь он выбрасывает Namespace Manager или XsltContext. Этот запрос имеет префикс, переменную или пользовательскую функцию. Любые решения? –

+0

Выньте 'b:', это ссылка на пространство имен в синтаксисе XPath. –

+0

Я работаю правильно, не выбрасывая исключение, но даже для правильного штрих-кода его значение для узла как null, извините, что беспокою вас! :) –

Смежные вопросы