zoukankan      html  css  js  c++  java
  • xml操作

    XML绑定TreeView
    
     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);
                }
               
            }
    
    
    
    
    public class ManageXML
        {
            /// <summary>
            /// 返回用户操作的SQL语句
            /// </summary>
            /// <param name="sqlNodeName">XML的操作节点</param>
            /// <returns>操作的sql语句</returns>
            public static string GetXMLPath(string strXMlFileName)
            {
                string m_strFullPath = "";
                Assembly Asm = Assembly.GetExecutingAssembly();
                //获取文件的路径                  
                //m_strFullPath = Asm.Location.Substring(0, (Asm.Location.LastIndexOf("\") + 1)) + "XMLSql.xml";
                m_strFullPath = AppDomain.CurrentDomain.BaseDirectory + "XMLLibrary\" + strXMlFileName;
                return m_strFullPath;
            }
            /// <summary>
            /// 获取XML数据库中的数据的方法
            /// </summary>
            /// <param name="strFilePath">传入文件路径</param>
            /// <returns>返回一个数据集</returns>
            public static DataSet GetAllDataFromXML(string strFilePath)
            {
                DataSet ds = new DataSet();
                FileInfo fileInfo = new FileInfo(strFilePath);
                if (fileInfo.Exists)
                {
                    try
                    {
                        ds.ReadXml(strFilePath);
                    }
                    catch { }
                }
                else
                {
                    ds = null;
                }
                if (ds != null)
                {
                    if (ds.Tables[0].Rows.Count < 1)
                        ds = null;
                }
                return ds;
            }
    
    
            /// <summary>
            /// 获取指定目录下所有子节点的值
            /// </summary>
            /// <param name="strFileName">文件路径</param>
            /// <param name="nodeDir">节点目录</param>
            /// <returns></returns>
            public static  Hashtable GetNodeList(string strFileName, string nodeDir)
            {
                Hashtable strNodeList = new Hashtable();
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(strFileName);
    
    
                    XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点 
    
    
                    foreach (XmlNode xn in nodeList)     //遍历所有子节点 
                    {
                        XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型 
                        strNodeList.Add(xe.GetAttribute("id").ToString(), xe.InnerText.Trim());
                    }
    
    
                }
                catch (Exception)
                {
    
    
                    throw;
                }
                return strNodeList;
            }
    
    
            /// <summary>
            /// 获取指定节点的值
            /// </summary>
            /// <param name="strFileName">文件路径</param>
            /// <param name="nodeName">节点名称</param>
            /// <param name="value">设置后的值</param>
            /// <param name="nodeDir">指定节点所在的节点目录</param>
            /// <returns></returns>
            public static string GetNodeValue(string strFileName, string nodeName, string nodeDir)
            {
                string value = null;
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(strFileName);
    
    
                    XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点 
    
    
                    foreach (XmlNode xn in nodeList)    //遍历所有子节点 
                    {
                        XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型 
    
    
                        if (xe.Name == nodeName)
                        {
                            value = xe.InnerText.Trim();
    
    
                            break;
                        }
                    }
                }
                catch (Exception exp)
                {
                    throw exp;
                }
    
    
                return value;
            }
    
    
            /// <summary>
            /// 获取指定节点下面对应属性的值
            /// </summary>
            /// <param name="strFileName">文件路径</param>
            /// <param name="nodeName">节点名称</param>
            /// <param name="nodeDir">指定节点所在的节点目录</param>
            /// <param name="attribute">节点对应的属性名称</param>
            /// <returns></returns>
            public static string GetNodeValue(string strFileName, string nodeName, string nodeDir, string attribute)
            {
                string value = null;
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(strFileName);
    
    
                    XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点 
    
    
                    foreach (XmlNode xn in nodeList)    //遍历所有子节点 
                    {
                        XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型 
    
    
                        if (xe.Name == nodeName)
                        {
                            //value = xe.InnerText.Trim();
                            value = (xe).Attributes[attribute].Value;
                            break;
                        }
                    }
                }
                catch (Exception exp)
                {
                    throw exp;
                }
    
    
                return value;
            }
    
    
            /// <summary>
            /// 修改指定结点值
            /// </summary>
            /// <param name="strFileName">文件路径</param>
            /// <param name="nodeName">节点名称</param>
            /// <param name="value">设置后的值</param>
            /// <param name="nodeDir">指定节点所在的节点目录</param>
            /// <returns></returns>
            public static bool UpdateNoteValue(string strFileName, string nodeName, string value, string nodeDir)
            {
                bool isSucceed = false;
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(strFileName);
    
    
                    XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点 
    
    
                    foreach (XmlNode xn in nodeList)    //遍历所有子节点 
                    {
                        XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型 
    
    
                        if (xe.Name == nodeName)
                        {
                            xe.InnerText = value;
    
    
                            isSucceed = true;
                            break;
                        }
                    }
    
    
                    xmlDoc.Save(strFileName);
                }
                catch (Exception exp)
                {
                    throw exp;
                }
    
    
                return isSucceed;
            }
    
    
            /// <summary>
            /// 修改指定结点值
            /// </summary>
            /// <param name="strFileName">文件路径</param>
            /// <param name="nodeName">节点名称</param>
            /// <param name="value">设置后的值</param>
            /// <param name="nodeDir">指定节点所在的节点目录</param>
            /// <returns></returns>
            public static bool UpdateNoteValue(string strFileName, string nodeName, string value, string nodeDir, string attribute, string attributeValue)
            {
                bool isSucceed = false;
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(strFileName);
    
    
                    XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点 
    
    
                    foreach (XmlNode xn in nodeList)    //遍历所有子节点 
                    {
                        XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型 
    
    
                        if (xe.Name == nodeName)
                        {
                            xe.InnerText = value;
                            (xe).Attributes[attribute].Value = attributeValue;
                            isSucceed = true;
                            break;
                        }
                    }
    
    
                    xmlDoc.Save(strFileName);
                }
                catch (Exception exp)
                {
                    throw exp;
                }
    
    
                return isSucceed;
            }
    
    
    
    
            /// <summary>
            /// 修改指定结点值
            /// </summary>
            /// <param name="strFileName">文件路径</param>
            /// <param name="nodeName">节点名称</param>
            /// <param name="value">设置后的值</param>
            /// <param name="nodeDir">指定节点所在的节点目录</param>
            /// <returns></returns>
            public static bool UpdateNoteValue(string strFileName, Hashtable hstable, string nodeDir)
            {
                bool isSucceed = false;
                try
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(strFileName);
    
    
                    XmlNodeList nodeList = xmlDoc.SelectSingleNode(nodeDir).ChildNodes;//获取bookstore节点的所有子节点 
                    foreach (DictionaryEntry item in hstable)
                    {
                        foreach (XmlNode xn in nodeList)    //遍历所有子节点 
                        {
                            XmlElement xe = (XmlElement)xn;  //将子节点类型转换为XmlElement类型 
    
    
                            if (xe.Name == item.Key.ToString())
                            {
                                xe.InnerText = item.Value.ToString();
    
    
                                isSucceed = true;
                                break;
                            }
                        }
                    }
    
    
                    xmlDoc.Save(strFileName);
                }
                catch (Exception exp)
                {
                    throw exp;
                }
    
    
                return isSucceed;
            }
    
    }     
       /// <summary>
            /// 移除选定节点集的所有属性
            /// </summary>
            /// <param name="xmlPathNode"></param>
            public void RemoveAllAttribute(string xmlPathNode)
            {
                XmlNodeList xnl = objXmlDoc.SelectNodes(xmlPathNode);
                foreach (XmlNode xn in xnl)
                {
                    xn.Attributes.RemoveAll();
                }
            }
            public void DeleteNode(string Node)
            {
                //刪除一个节点。
                try
                {
                    string mainNode = Node.Substring(0, Node.LastIndexOf("/"));
                    objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
                }
                catch
                {
                    //throw;   
                    return;
                }
            }
            public void InsertNodeWithChild(string mainNode, string ChildNode, string Element, string Content)
            {
                //插入一节点和此节点的一子节点。
                XmlNode objRootNode = objXmlDoc.SelectSingleNode(mainNode);
                XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
                objRootNode.AppendChild(objChildNode);//插入节点
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                objElement.InnerText = Content;
                objChildNode.AppendChild(objElement);//插入子节点
            }
            /// <summary>
            /// 插入一个节点,带一个Attribute和innerText
            /// </summary>
            /// <param name="mainNode"></param>
            /// <param name="Element">节点名称</param>
            /// <param name="Attrib">Attribute名称</param>
            /// <param name="AttribContent">Attribute值</param>
            /// <param name="Content">innerText值</param>
            public void InsertNode(string mainNode, string Element, string Attrib, string AttribContent, string Content)
            {
                XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                objElement.SetAttribute(Attrib, AttribContent);
                objElement.InnerText = Content;
                objNode.AppendChild(objElement);
            }
            /// <summary>
            /// 插入一个节点,带一个Attribute
            /// </summary>
            /// <param name="mainNode"></param>
            /// <param name="Element">节点名称</param>
            /// <param name="Attrib">Attribute名称</param>
            /// <param name="AttribContent">Attribute值</param>   
            public void InsertNode(string mainNode, string Element, string Attrib, string AttribContent)
            {
                XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                objElement.SetAttribute(Attrib, AttribContent);
                objNode.AppendChild(objElement);
            }
            /// <summary>
            /// 插入一个节点
            /// </summary>
            /// <param name="mainNode"></param>
            /// <param name="Element">节点名称</param>       
            public void InsertNode(string mainNode, string Element)
            {
                XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                objNode.AppendChild(objElement);
            }
            //<summary>
            //插入一个节点,带多个属性和一个inner text
            //</summary>
            public void InsertNode(string mainNode, string elementName, string[] arrAttributeName, string[] arrAttributeContent, string elementContent)
            {
                try
                {
                    XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
                    XmlElement objElement = objXmlDoc.CreateElement(elementName);
                    for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)
                    {
                        objElement.SetAttribute(arrAttributeName[i], arrAttributeContent[i]);
                    }
                    objElement.InnerText = elementContent;
                    objNode.AppendChild(objElement);
                }
                catch
                {
                    throw;
                    //string t = mainNode;
                }
            }
            ///<summary>
            ///插入一个节点,带多个属性
            ///</summary>
            public void InsertNode(string mainNode, string elementName, string[] arrAttributeName, string[] arrAttributeContent)
            {
                try
                {
                    XmlNode objNode = objXmlDoc.SelectSingleNode(mainNode);
                    XmlElement objElement = objXmlDoc.CreateElement(elementName);
                    for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)
                    {
                        objElement.SetAttribute(arrAttributeName[i], arrAttributeContent[i]);
                    }
                    //objElement.InnerText = elementContent;
                    objNode.AppendChild(objElement);
                }
                catch
                {
                    throw;
                    //string t = mainNode;
                }
            }
            /// <summary>
            /// 插入子节点(带多个属性)
            /// </summary>
            /// <param name="parentNode">要插入的父节点</param>
            /// <param name="elementName">插入的节点名称</param>
            /// <param name="arrAttributeName">属性名称[数组]</param>
            /// <param name="arrAttributeContent">属性内容[数组]</param>
            /// <param name="elementContent">节点内容</param>
            public void AddChildNode(string parentNodePath, string elementName, string[] arrAttributeName, string[] arrAttributeContent, string elementContent)
            {
                try
                {
                    XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);
                    XmlElement objChildElement = objXmlDoc.CreateElement(elementName);
                    for (int i = 0; i <= arrAttributeName.GetUpperBound(0); i++)
                    {
                        objChildElement.SetAttribute(arrAttributeName[i], arrAttributeContent[i]);
                    }
                    objChildElement.InnerText = elementContent;
                    parentNode.AppendChild(objChildElement);
                }
                catch
                {
                    return;
                }
            }
            /// <summary>
            /// 插入子节点(将内容以CData形式写入)
            /// </summary>
            /// <param name="parentNode">要插入的父节点</param>
            /// <param name="elementName">插入的节点名称</param>
            /// <param name="elementContent">节点内容</param>
            public void AddChildNodeCData(string parentNodePath, string elementName, string elementContent)
            {
                try
                {
                    XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);
                    XmlElement objChildElement = objXmlDoc.CreateElement(elementName);
                    //写入cData数据
                    XmlCDataSection xcds = objXmlDoc.CreateCDataSection(elementContent);
                    objChildElement.AppendChild(xcds);
                    parentNode.AppendChild(objChildElement);
                }
                catch
                {
                    return;
                }
            }
    
    
            /// <summary>
            /// 插入子节点(仅内容,不带属性)
            /// </summary>
            /// <param name="parentNode">要插入的父节点</param>
            /// <param name="elementName">插入的节点名称</param>
            /// <param name="elementContent">节点内容</param>
            public void AddChildNode(string parentNodePath, string elementName, string elementContent)
            {
                try
                {
                    XmlNode parentNode = objXmlDoc.SelectSingleNode(parentNodePath);
                    XmlElement objChildElement = objXmlDoc.CreateElement(elementName);
                    objChildElement.InnerText = elementContent;
                    parentNode.AppendChild(objChildElement);
                }
                catch
                {
                    return;
                }
            }
            /// <summary>
            /// 根据xpath值查找节点
            /// </summary>
            /// <param name="NodePath">要查找节点的xpath值</param>
            /// <returns>找到返回true,否则返回true</returns>
            public bool FindNode(string NodePath)
            {
                try
                {
                    if (objXmlDoc.SelectSingleNode(NodePath) != null)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                catch
                {
                    return false;
                }
            }
    


     

  • 相关阅读:
    Hadoop OutputFormat浅析
    硬盘性能
    HDFS读文件过程分析:读取文件的Block数据
    HDFS写文件过程分析
    JAVA中的编码分析
    HBase 写入优化
    HBase ttl 验证
    大数据多维分析平台的实践
    TiDB在特来电的探索
    Druid 基础使用-操作篇(Pivot、plyql)
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3155555.html
Copyright © 2011-2022 走看看