我现在有一段XML文件 如下
<商品信息>
  <茶>
    <名称>绿茶</名称>
    <类型>低糖</类型>
    <单价>3.5</单价>
    <产地>嘎嘎公司</产地>
    <容量>1.25</容量>
    <库存>5</库存>
  </茶>
  <咖啡>
    <名称>黑咖啡</名称>
    <类型>无糖</类型>
    <单价>3</单价>
    <产地>笑笑公司</产地>
    <容量>2</容量>
    <库存>3</库存>
  </咖啡>
</商品信息>请问  (例如说)我如何修改  茶下面的产地的InterText内容
我是用XPATH读取的  只要知道  <茶>标签  和它的子节点的<产地>标签就能修改其内的值??

解决方案 »

  1.   

      public bool SetSelectSingleNodeInnerXml(string xpath, string value, SortedList<string,string> Attributes)
            {
                try
                {
                    XmlDocument xmldoc = new XmlDocument();
                    xmldoc.Load(filename);
                    XmlNode root = xmldoc.SelectSingleNode(xpath);
                    Page p = new Page();
                    if (Attributes != null)
                    {
                        foreach (KeyValuePair<string, string> k in Attributes)
                        {
                            root.Attributes[k.Key].Value =p.Server.HtmlEncode(k.Value);
                        }
                    }
                    root.InnerXml =p.Server.HtmlEncode(value);
                    xmldoc.Save(filename);
                    return true;
                }
                catch(Exception ex)
                {
                    errMessage = ex.Message;
                    return false;
                }
            }
    参考
      

  2.   

                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(PATH);
                    XmlNode node = xmlDoc.SelectSingleNode("商品信息/茶/产地");
                    node.InnerText = "安徽";
                    xmlDoc.Save(PATH);path 指的是你的xml的路径  "安徽"  就是你要加入的地点
      

  3.   


    那如果我的标签上 有2个茶  用type来分别  怎么用XMLDOC.SELECTSINGLENODE来区别开??例如说下面的   我想取得  type="red"的产地  如何实现?如果用XMLELEMENTLIST的话  效率会低点吧   有直接判断TYPE然后取得RED的产地?
    <茶 type="red"> 
        <名称>绿茶 </名称> 
        <类型>低糖 </类型> 
        <单价>3.5 </单价> 
        <产地>嘎嘎1公司 </产地> 
        <容量>1.25 </容量> 
        <库存>5 </库存> 
      </茶> 
    <茶 type="green"> 
        <名称>绿茶 </名称> 
        <类型>低糖 </类型> 
        <单价>3.51 </单价> 
        <产地>嘎嘎2公司 </产地> 
        <容量>1.252 </容量> 
        <库存>2 </库存> 
      </茶> 
      

  4.   

    如果只是从XML对象读取数据,用只读的XPathDocument代替XMLDocument,可以提高性能
    //避免
    XmlDocument xmld = new XmlDocument();
    xmld.LoadXml(sXML); 
    txtName.Text = xmld.SelectSingleNode( "/packet/child").InnerText;
    //推荐
    XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));
    XPathNavigator xnav = xmldContext.CreateNavigator(); 
    XPathNodeIterator xpNodeIter = xnav.Select( "packet/child");
    iCount = xpNodeIter.Count; 
    xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false); 
    while(xpNodeIter.MoveNext()) 

    sCurrValues += xpNodeIter.Current.Value+ ","; 
    }