asp.net中的xpath c#web appication选择xmldocument.selectnodes中的多个值

时间:2011-09-15 19:35:15

标签: xml xpath

我有一个像这样的xml文档......这个xml doc提供了网页内容

<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

基于页面ID和市场进行搜索
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() + "']");

我可以通过ID搜索没问题,但添加第二个市场参数让我很难...任何帮助都会很棒。

我将使用两个参数输入xpath如何设置xml?

1 个答案:

答案 0 :(得分:0)

你错过了关于包含的结束')'。

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使用string.Format():

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

当您需要查找缺少括号等语法错误时,请稍微帮助。