/// <summary> /// XmlHelper 的摘要說明。 /// xml操作類 /// </summary> public class XmlHelper { protected string strXmlFile; protected XmlDocument objXmlDoc = new XmlDocument(); public XmlHelper(string XmlFile) { // // TODO: 在這里加入建構函式的程序代碼 // try { objXmlDoc.Load(XmlFile); } catch (System.Exception ex) { throw ex; } strXmlFile = XmlFile; } public DataTable GetData(string XmlPathNode) { //查找數據。返回一個DataView DataSet ds = new DataSet(); StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml); ds.ReadXml(read); return ds.Tables[0]; } /// <summary> /// 新節點內容。 /// 示例:xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp"); /// </summary> /// <param name="XmlPathNode"></param> /// <param name="Content"></param> public void Replace(string XmlPathNode, string Content) { //更新節點內容。 objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content; } /// <summary> /// 刪除一個指定節點的子節點。 /// 示例: xmlTool.DeleteChild("Book/Authors[ISBN=\"0003\"]"); /// </summary> /// <param name="Node"></param> public void DeleteChild(string Node) { //刪除一個節點。 string mainNode = Node.Substring(0, Node.LastIndexOf("/")); objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node)); } /// <summary> /// * 使用示列: /// 示例: XmlHelper.Delete( "/Node", "") /// XmlHelper.Delete( "/Node", "Attribute") /// </summary> /// <param name="node">節點</param> /// <param name="attribute">屬性名,非空時刪除該節點屬性值,否則刪除節點值</param> public void Delete( string node, string attribute) { try { XmlNode xn = objXmlDoc.SelectSingleNode(node); XmlElement xe = (XmlElement)xn; if (attribute.Equals("")) xn.ParentNode.RemoveChild(xn); else xe.RemoveAttribute(attribute); } catch { } } /// <summary> /// 插入一節點和此節點的一子節點。 /// 示例:xmlTool.InsertNode("Book","Author","ISBN","0004"); /// </summary> /// <param name="MainNode">主節點</param> /// <param name="ChildNode">子節點</param> /// <param name="Element">元素</param> /// <param name="Content">內容</param> public void InsertNode(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> /// 插入一個節點,帶一屬性。 /// 示例: xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii"); /// </summary> /// <param name="MainNode">主節點</param> /// <param name="Element">元素</param> /// <param name="Attrib">屬性</param> /// <param name="AttribContent">屬性內容</param> /// <param name="Content">元素內容</param> public void InsertElement(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> /// 插入一個節點,不帶屬性。 /// 示例:xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa"); /// </summary> /// <param name="MainNode">主節點</param> /// <param name="Element">元素</param> /// <param name="Content">元素內容</param> public void InsertElement(string MainNode, string Element, string Content) { //插入一個節點,不帶屬性。 XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode); XmlElement objElement = objXmlDoc.CreateElement(Element); objElement.InnerText = Content; objNode.AppendChild(objElement); } /// <summary> /// 對xml文件做插入,更新,刪除后需做Save()操作,以保存修改 /// </summary> public void Save() { //保存文檔。 try { objXmlDoc.Save(strXmlFile); } catch (System.Exception ex) { throw ex; } objXmlDoc = null; } } //========================================================= //實例應用: //string strXmlFile = Server.MapPath("TestXml.xml"); //XmlControl xmlTool = new XmlControl(strXmlFile); // 數據顯視 // dgList.DataSource = xmlTool.GetData("Book/Authors[ISBN=\"0002\"]"); // dgList.DataBind(); // 更新元素內容 // xmlTool.Replace("Book/Authors[ISBN=\"0002\"]/Content","ppppppp"); // xmlTool.Save(); // 添加一個新節點 // xmlTool.InsertNode("Book","Author","ISBN","0004"); // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Content","aaaaaaaaa"); // xmlTool.InsertElement("Book/Author[ISBN=\"0004\"]","Title","Sex","man","iiiiiiii"); // xmlTool.Save(); // 刪除一個指定節點的所有內容和屬性 // xmlTool.Delete("Book/Author[ISBN=\"0004\"]"); // xmlTool.Save(); // 刪除一個指定節點的子節點 // xmlTool.Delete("Book/Authors[ISBN=\"0003\"]"); // xmlTool.Save();