test>   
    <Name type="name1">   
      <pp>   
              <code>S001</code>   
        <aa>长城酒店</aa>   
      </pp>
          <pp>   
              <code>S002</code>   
        <aa>长城饭店</aa>   
      </pp>  
      <pp>   
              <code>S003</code>   
        <aa>长城大酒店</aa>   
      </pp>   
      </Name>     
</test>   
我的数据库就是这么一个XML文件,当我在输入框中输入"酒店"时,我怎样得到1和3节点的“长城酒店”和“长城大酒店”的值呢,就想sql的like一样,我在网上查了查,看到XML的查询语言xql,请问我在C#中该怎么使用呢,或者尤其他的方法吗?请指教

解决方案 »

  1.   

    找本书研究下Xpath的语法,用的少,无法帮助LZ
      

  2.   

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
    doc.LoadXml(@"<test><Name type='name1'><pp><code>S001</code>   
            <aa>长城酒店</aa>   
          </pp>
              <pp>   
                  <code>S002</code>   
            <aa>长城饭店</aa>   
          </pp>  
          <pp>   
                  <code>S003</code>   
            <aa>长城大酒店</aa>   
          </pp>   
          </Name>     
    </test>  ");
    string keyword="酒店";
    string xpath = "contains(string(aa),'" + keyword + "')";
    System.Xml.XmlNodeList nodes = doc.SelectNodes("/test/Name/pp[" +xpath  + "]/code");
    foreach(System.Xml.XmlNode x in nodes)
    {
     Response.Write("<li>" + x.InnerText);
    }
      

  3.   

    当然,如果是xml文件,则可以
    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
    doc.Load("path\\xxx.xml");
      

  4.   

    曾经也头疼过这个问题,用xpath的话比较麻烦,另外是在C#中进行操作,
    感觉可以这样,先把这个xml生成DataSet数据集,然后对这个DataSet数据集
    进行操作,比如先对这个DataSet数据集进行循环验证,看哪些包含查询条件的
    都写入到一个新的数据集中,然后用这个新的数据集绑定页面的列表。
      

  5.   

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
    doc.LoadXml(@"<test><Name type='name1'><pp><code>S001</code>   
            <aa>长城酒店</aa>   
          </pp>
              <pp>   
                  <code>S002</code>   
            <aa>长城饭店</aa>   
          </pp>  
          <pp>   
                  <code>S003</code>   
            <aa>长城大酒店</aa>   
          </pp>   
          </Name>     
    </test>  ");
    string keyword="酒店";
    string xpath = "contains(string(aa),'" + keyword + "')";
    System.Xml.XmlNodeList nodes = doc.SelectNodes("/test/Name/pp[" +xpath  + "]/code");
    foreach(System.Xml.XmlNode x in nodes)
    {
     Console.Write("\r\n" + x.InnerText);
    }
      

  6.   

    感觉从可操作性上来讲,把它读到DataSet里比较好做,呵呵是呀,孟子是人牛,呵呵
      

  7.   

    非常感谢各位,尤其是孟老大,目前已经能查出来了,但我只想查出<pp id='10'>下面的酒店,该怎么办呢?
    <test><Name type='name1'>
              <pp id='10'>
                  <code>S001</code>   
            <aa>长城酒店</aa>   
          </pp>
              <pp id='20'>   
                  <code>S002</code>   
            <aa>长城饭店</aa>   
          </pp>  
          <pp id='30'>   
                  <code>S003</code>   
            <aa>长城大酒店</aa>   
          </pp>   
          </Name>     
    </test>
      

  8.   

    呵呵,解决了。
    pp[@id = '10']可以获得属性
      

  9.   

    xml我不怎么会用,汗死了。正在学习当中,马上要用到