一:
string xmlNeiRong=xxx;
XmlDocument doc = new XmlDocument();
doc.Load(/*xmlNeiRong*/) 这里要怎么样写哦?二:
XML结构如下
<?xml version="1.0" encoding="GB2312" ?> 
<allproducts version="1.0">
<jiedian>
  <product name="id" value="130" /> 
  <product name="mz" value="20" /> 
  <product name="sj" value="19.2" /> 
  <product name="leibie" value="类别1" /> 
  <product name="diqu" value="四川" /> 
</jiedian>
<jiedian>
  <product name="id" value="131" /> 
  <product name="mz" value="25" /> 
  <product name="sj" value="24.2" /> 
  <product name="leibie" value="类别2" /> 
  <product name="diqu" value="四川1" /> 
</jiedian>
</allproducts>
请问如何通过diqu和leibie和mz这3个的值来获取该节点的id``麻烦给代码``谢谢``

解决方案 »

  1.   

    1.写入xml文件需要存放的路径和文件名
    例如:doc.Load("c:\temp\Test.xml");2.利用xpath进行定位处理;
      查找 diqu
      XmlNode selectNote = doc.SelectSingleNode("/allproducts/jiedian/product/[@name='diqu'");这个时候你就可以取得product这个Element。然后,你就可以获取其值哈。
      

  2.   

    第一个`我需要直接在程序里弄`不是先写入到xml再读取XML```第二个,我需要匹配那3个`该怎么样弄``你说的只能匹配一个吧``
      

  3.   

    第一个可以用doc.LoadXml("")的方法.
    第二个似乎只有通过遍历了,查找<jiedian>结点的三个子节点是否匹配了.
      

  4.   


    2.利用xpath进行定位处理; 
      查找 diqu 
      XmlNode selectNote = doc.SelectSingleNode("/allproducts/jiedian/product/[@name='diqu'");这个时候你就可以取得product这个Element。然后,你就可以获取其值哈。
    我是要匹配diqu的value等于四川的 该怎么样弄?
      

  5.   

    name 每个jiedian里都有name='diqu'  问题是如何找出name='diqu' 同时value="四川" 的所有节点?
      

  6.   

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.Load(Server.MapPath(xmlNeiRong));
                XmlNodeList nodelist = doc.SelectSingleNode("jiedian").ChildNodes;           
                foreach (XmlNode node in nodeList)
                {
                    XmlElement xe = (XmlElement)node;
                    if (xe.GetAttribute("diqu") == ".."&&xe.GetAttribute("liebie") == ".."&&xe.GetAttribute("mz") == "..")
                    {
                        Response.Write(xe.GetAttribute("id").ToString());
                    }
                    else
                    {
                        Response.Write("not find it");
                    }
                }
      

  7.   

    难道,你不会用 or 来连接你的查找定位 的条件???
    "/allproducts/jiedian/product/[@name='diqu' or @name='四川']";难道你不会用
    System.Xml.XmlDataDocument的SelectNodes方法????是不是非要写代码不可?
      

  8.   

      http://topic.csdn.net/u/20080220/11/a736387f-34f6-4584-b3fb-142e199c1551.html
      

  9.   

     protected void Page_Load(object sender, EventArgs e)
        {
            bool flag = false;
            string mz="";
            string diqu="";
            string value1="";
            string value2="";
            XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath("test.xml"));//根据你的xml文件所在来确定
            XmlNodeList list = doc.SelectSingleNode("allproducts").ChildNodes;
            foreach (XmlNode node in list)
            {
                XmlNodeList xlist = node.ChildNodes;
                //要比较的名称和值都可以通过变量来传递
                if (((XmlElement)xlist.Item(1)).GetAttribute("name") == mz && ((XmlElement)xlist.Item(1)).GetAttribute("value") == value1 && ((XmlElement)xlist.Item(4)).GetAttribute("name") == diqu && ((XmlElement)xlist.Item(4)).GetAttribute("value") == value2)
                {
                    Response.Write(((XmlElement)xlist.Item(0)).GetAttribute("name")+":"+((XmlElement)xlist.Item(0)).GetAttribute("value"));//输出id:id值
                    flag = true;
                }            
            }
            if (flag == false)
                Response.Write("not found");       
        }