现有XML文档如:<item id="totid">0</item>,请教大神,如果用C#语句通过匹配“totid”来获取“0”这个值,代码该如何写~~~c#xml

解决方案 »

  1.   

    http://blog.csdn.net/happy09li/article/details/7460521
      

  2.   

    要自己解析的话,一般有两种模式:SAX,DOM。如果XML不是很大,占用内存少,可以用DOM方式,速度快,编写方便。
      

  3.   

    //string s = "";
                //XmlDocument doc = new XmlDocument();
                //// 装入指定的XML文档
                //doc.Load("modify.xml");
                //// 设定XmlNodeReader对象来打开XML文件
                //XmlNodeReader reader = new XmlNodeReader(doc);
                //try
                //{
                //    // 读取XML文件中的数据,并显示出来
                //    while (reader.Read())
                //    {
                //        //判断当前读取得节点类型
                //        switch (reader.NodeType)
                //        {
                //            case XmlNodeType.Element:
                //                s = reader.Name;
                //                break;
                //            case XmlNodeType.Text:
                //                if (s.Equals("name"))
                //                {
                //                    cmbEdit.Properties.Items.Add(reader.Value);
                //                }
                //                break;
                //        }
                //    }
                //}
                //finally
                //{
                //    //清除打开的数据流
                //    if (reader != null)
                //        reader.Close();
                //}
      string cmbValue = cmbEdit.Text.Trim() ?? "";
                string textValue = textEdit.Text.Trim() ?? "";
                XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(GlobalVariable.HisApp.Path.ConfigPath+"modify.xml");            //获取要修改的节点取出所有的子节点
                XmlNodeList nodeList = xmlDoc.SelectSingleNode("ColName").ChildNodes;
                foreach (XmlNode xn in nodeList)
                {
                   XmlElement xe = (XmlElement)xn;
                   XmlNodeList nls = xe.ChildNodes;
                   foreach (XmlNode xn1 in nls)
                    {
                        if (xn1.InnerText == cmbValue)
                        {
                            xn1.InnerText = textValue;
                            xmlDoc.Save(GlobalVariable.HisApp.Path.ConfigPath + "modify.xml");
                            GlobalVariable.HisApp.Prompt.Show("修改成功", MessageBoxButtons.OK);
                            cmbEdit.Properties.Items.Clear();
                            ReadXml();
                            break;
                        }
                    }
                 } 
      

  4.   

    如果查询的话,那么建议使用XPATH。
      

  5.   

     XmlDocument xd = new XmlDocument();
                    xd.Load("你得xml文件目录");
                    XmlNode xn= xd.SelectSingleNode("item[@id='totid']");
                    你要的值=xn.InnerText;
      

  6.   

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(@"c:\test.xml");
    XmlElement elem= xmlDoc.SelectSingleNode("//item[@id='totid']") as XmlElement;
    Console.WriteLine(elem.InnerText);
      

  7.   

    也可以用linq to xml<?xml version="1.0" encoding="utf-8" ?>
    <test>
      <item id="totid">0</item>
      <item id="totid1">1</item>
      <item id="totid2">2</item>
      <item id="totid3">3</item>
      <item id="totid4">4</item>
    </test>            string path = @"H:\DavidTest\DavidMeeting\test.xml";
                XElement root = XElement.Load(path);
                var searchObj = from ele in root.Elements("item").Attributes("id")
                                where ele.Value == "totid"
                                select ele.Parent;
      

  8.   


    Console.WriteLine(searchObj.First().Value);