xpath в asp.net c # выбор веб-приложения нескольких значений в xmldocument.selectnodes - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть такой XML-документ ... этот документ XML предоставляет контент для веб-страниц

<pages id="pages">
  <page id="Shipping-Services">
    <linktext>Shipping Services</linktext>
    <pagelink>Shipping-Services</pagelink>
     <content>Shipping Services</content>
     <H1>Shipping Services</H1>
     <LogoALT>Shipping Services</LogoALT>
     <Title>Shipping Services</Title>
     <Desc>Shipping Services</Desc>
     <KeyWords>My, Key, Words</KeyWords>
     <banner></banner>
     <market>value</market>
   </page>
</pages>

Я пытаюсь выполнить поиск по идентификатору страницы и рынку, используя xmldocument.selectnodes

XmlDocument xdoc2 = new XmlDocument();
xdoc2.Load(Server.MapPath("~/xml/Pagesextend.xml"));
XmlNodeList xList2 = xdoc2.SelectNodes(".//*[@id='" + Request.QueryString[1].ToString() + "']");

попробовал это .... не работает

 XmlDocument xdoc = new XmlDocument();
 xdoc.Load(Server.MapPath("~/xml/Pages.xml"));
 XmlNodeList xList = xdoc.SelectNodes(".//*[@id='" + Request.QueryString["p"].ToString() + "' and contains(market, '" + Request.QueryString["m"].ToString() + "']");

Я могу искать по идентификатору без проблем, но добавление второго рыночного параметра ставит меня в тупик ... Любая помощь будет отличной.

какой xpath я бы ввел, чтобы использовать два параметра, как у меня есть настройка xml?

1 Ответ

0 голосов
/ 16 сентября 2011

Вы пропустили закрывающий ')' на содержании.

XmlDocument xdoc = new XmlDocument();
xdoc.Load(Server.MapPath("~/xml/Pages.xml"));
XmlNodeList xList = xdoc.SelectNodes(".//*[@id='" + Request.QueryString["p"].ToString() + "' and contains(market, '" + Request.QueryString["m"].ToString() + "')]");

Я обычно предпочитаю использовать string.Format () для XPath:

XmlNodeList xList = xmlDoc.SelectNodes(string.Format(".//*[@id='{0}' and contains(market, '{1}')]", Request.QueryString["p"].ToString(), Request.QueryString["m"].ToString()));

Помогает немного, когда вам нужно искать незначительные синтаксические ошибки, такие как пропущенные скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...