例如已有这样一条xml字符串
<客户 客户姓名="王五" 客户代码="3" 协议号="abc" 额度="333" 账户="3" 品种="4" </客户信息>怎么在这条xml中新增一个属性,求各位帮忙,谢谢!

解决方案 »

  1.   

    System.IO.MemoryStream stream = new System.IO.MemoryStream();
                byte[] bytes =System.Text.Encoding.Unicode.GetBytes("<客户 客户姓名=\"王五\" 客户代码=\"3\" 协议号=\"abc\" 额度=\"333\" 账户=\"3\" 品种=\"4\" />");
                stream.Write(bytes, 0, bytes.Length);
                stream.Position = 0L;
                System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Load(stream);            doc.Element("客户").Add(new System.Xml.Linq.XAttribute("新属性", "100"));            string xml = doc.ToString();
      

  2.   

    http://www.cnblogs.com/lifepoem/archive/2011/12/06/2277554.html这是 linq操作 xml的教程   
    看完了 你不但学会了 操作xml的知识  还学习了linq  不要图懒  在网上找现成的方法  那样没有提升的
      

  3.   

    lz给的xml根本不合法,假定给客户姓名为王五的添加属性“客户性别”,属性值为“男”:
    string filename = @"c:\test.xml";
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(filename);
    (xmlDoc.SelectSingleNode(@"//客户[@客户姓名='王五']") as XmlElement).SetAttribute("客户性别", "男");
    xmlDoc.Save(filename);
      

  4.   

    还有其他方式吗?下面是我的代码,新增属性“成交编号”,但像我这样加的话就是新增了一个节点,而不是把“成交编号”这个属性加到原有的“客户信息”节点上。
    XmlDocument xmlData = new XmlDocument();
    xmlData.LoadXml(ViewState["客户信息"].ToString());
    XmlElement firstNode = (XmlElement)xmlData.FirstChild;XmlElement customer = xmlData.CreateElement(string.Empty, "客户信息", string.Empty);XmlAttribute tId = xmlData.CreateAttribute("成交编号");
    tId.Value = TransactionID.Text;
    customer.Attributes.Append(tId);firstNode.AppendChild(customer);
      

  5.   

    代码我不写了。很简单,
    参考http://blog.csdn.net/chinajiyong/article/details/7485019
      

  6.   

    大侠,直接告诉我最后怎么把新的属性加到原有的节点上吧!其实我最后这一句firstNode.AppendChild(customer); 就是把这个属性加上,只不过是错了,新增了一个,而没有加到原有的上面去。
      

  7.   

    linq to xml 操作简单
      

  8.   

    string xmlString = @"<客户 客户姓名='王五' 客户代码='3' 协议号='abc' 额度='333' 账户='3' 品种='4'> </客户>";
                 Console.WriteLine(xmlString);
                 XmlDocument doc = new XmlDocument();
                 doc.LoadXml(xmlString);
                 if (doc.HasChildNodes)
                 { 
                   foreach(XmlNode node in doc.ChildNodes)
                   {
                       if (node.Name == "客户")
                       {
                           XmlAttribute attr = doc.CreateAttribute("成交编号");
                           attr.Value = "bianhao";
                           node.Attributes.Append(attr);
                       }
                   }
                 }
                 Console.WriteLine(doc.InnerXml);
      

  9.   

    看你操作XML是否频繁,如果不是每分钟千万次的读写XML,那就用linq to xml 吧。网上这方面的资料很多。前段时间的编码内容也遇到了操作xml文件,因为以前学java的时候用了很多的Dom4J一类的树状节点操作,所以很自然这里也这样用。后来学了一点linq语句,发现太方便了。推荐使用linq,如果没有很明确的效率要求的话。