日期:2014-05-18  浏览次数:21096 次

C# XML 查找节点 添加数据
XML中 用C#代码winform的 如何查找到一个固定的节点 并在其中添加数据。 

<Placemark>
  <description>Front line</description>
  <Name>sole</Name>
  <styleUrl>#roadStyle</styleUrl>
  <LineString>
  <coordinates>
  114.0456,22.324 
  </coordinates>
  </LineString>
  </Placemark>

如何根据Name的值找到这个Placemark
让后插入数据到
coordinates节点中呢。


------解决方案--------------------
XmlElement Chid_Elent = Doc.DocumentElement; //得到XML的根节点
 if (Chid_Elent.ChildNodes.Count > 0)//如果根节点下有子节点
{
foreach (XmlElement Elent in Chid_Elent.ChildNodes)//循环获取节点值
{
value=Elent.InnerText;//得到值
Elent.InnerText=vaue; //或者赋值 value为外部变量
}
}
最后save(路径)
------解决方案--------------------
上面是针对每个子节点, 你可以在循环中加个判断 if(Elent.Name==coordinates)
------解决方案--------------------
http://blog.csdn.net/xiaotian_1987/article/details/5678929
------解决方案--------------------
用TreeView显示Xml再对xml进行增删改查,,,

Treeview绑定xml
C# code
private void XmlOperation_Load(object sender, EventArgs e)
        {
            path = AppDomain.CurrentDomain.BaseDirectory + @"NameList.xml";
            xml.Load(path);//加载xml文件
            bindTvXml();
        }

        /// <summary>
        /// 绑定TreeView
        /// </summary>
        private void bindTvXml()
        {
            for (int i = 0; i < xml.DocumentElement.ChildNodes.Count; i++)
            {
                XmlNode Xnode = xml.DocumentElement.ChildNodes[i];
                TreeNode node = new TreeNode();
                node.Text = Xnode.Attributes["name"].Value;
                node.Tag = Xnode;
                bindChildNode(node, Xnode);//绑定子节点
                TvXml.Nodes.Add(node);
                TvXml.HideSelection = false;
            }
        }
        
        /// <summary>
        /// 递归绑定子节点
        /// </summary>
        /// <param name="node"></param>
        /// <param name="xml"></param>
        private void bindChildNode(TreeNode node, XmlNode xml)
        {
            for (int i = 0; i < xml.ChildNodes.Count; i++)
            {
                TreeNode Childnode = new TreeNode();
                XmlNode ChildXml = xml.ChildNodes[i];
                Childnode.Text = ChildXml.Value;
                Childnode.Name = "1";
                Childnode.Tag = xml.ChildNodes[i];
                if (ChildXml.HasChildNodes)
                {
                    if (ChildXml.ChildNodes[0].NodeType == XmlNodeType.Text)
                        Childnode.Text = ChildXml.ChildNodes[0].InnerText;
                    else
                        bindChildNode(Childnode, ChildXml);
                }
                node.Nodes.Add(Childnode);
            }
           
        }

------解决方案--------------------
C# code
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(@"c:\test.xml");
        XmlNode node = xmlDoc.SelectSingleNode(@"//Placemark/Name[text()='sole']");
        node.ParentNode["LineString"]["coordinates"].InnerXml = "新值";
        xmlDoc.Save(@"c:\test.xml");