/// <summary> /// File 정보를 담고 있는 XmlElement를 filename으로 저장한다. /// </summary> /// <param name="fileNode">파일 Stream 을 가지고 있는 Node</param> /// <param name="filename">저장할 파일 이름</param> /// <param name="overwrite">겹쳐쓰기 여부</param> /// <returns>저장된 파일 이름</returns> public string SaveFileElement(XmlElement fileNode, string filename, bool overwrite) { fileNode.ShouldNotBeNull("fileNode"); if(IsDebugEnabled) log.Debug("파일정보를 담은 요소를 파일로 저장합니다... fileNode=[{0}], filename=[{1}], overwrite=[{2}]", fileNode.Name, filename, overwrite); var buff = Convert.FromBase64String(fileNode.InnerText); if(!overwrite && File.Exists(filename)) filename = filename.FindNewFileName(); Path.GetDirectoryName(filename).CreateDirectory(); using(var bs = FileTool.GetBufferedFileStream(filename, FileOpenMode.ReadWrite)) bs.Write(buff, 0, buff.Length); if(IsDebugEnabled) log.Debug("파일정보를 담은 요소를 파일로 저장했습니다!!! filename=[{0}]", filename); return filename; }
/// <summary> /// 새로운 XmlElement를 refNode 앞에 추가한다. /// </summary> public XmlElement InsertElementBefore(XmlElement refNode, string xml) { refNode.ShouldNotBeNull("refNode"); XmlElement result = null; var document = xml.CreateXmlDocument(); if(document.IsValidDocument()) result = InsertElementBefore(refNode, document.Root); return result; }
/// <summary> /// 새로운 XmlElement를 refNode 앞에 추가한다. /// </summary> /// <returns>실패시에는 null을 반환한다.</returns> public XmlElement InsertElementBefore(XmlElement refNode, string name, string text) { refNode.ShouldNotBeNull("refNode"); name.ShouldNotBeWhiteSpace("name"); if(IsDebugEnabled) log.Debug("Insert new XmlElement before reference node. refNode=[{0}], name=[{1}], text=[{2}]", refNode.Name, name, text); return InsertElementBefore(refNode, CreateElement(name, text)); }
/// <summary> /// 새로운 XmlElement를 refNode 앞에 추가한다. /// </summary> public XmlElement InsertElementBefore(XmlElement refNode, XmlElement newNode) { refNode.ShouldNotBeNull("refNode"); if(refNode.ParentNode != null && newNode != null) return refNode.ParentNode.InsertBefore(newNode, refNode) as XmlElement; throw new XmlException("Invalid reference Node, Invalid Inserting Node"); }
/// <summary> /// 부모 노드에 원본 노드의 복사본을 추가한다. /// </summary> /// <param name="parentNode">부모 노드</param> /// <param name="srcNode">복사할 대상 요소</param> /// <returns>새로 복사해서 부모노드에 추가한 요소(<see cref="XmlElement"/>)</returns> public XmlElement AddElement(XmlNode parentNode, XmlElement srcNode) { parentNode.ShouldNotBeNull("parentNode"); srcNode.ShouldNotBeNull("srcNode"); if(IsDebugEnabled) log.Debug("XmlElement를 추가합니다... parentNode=[{0}], srcNode=[{1}]", parentNode.Name, srcNode.Name); var result = srcNode.CloneNode(true) as XmlElement; if(result != null) { parentNode.AppendChild(result); if(IsDebugEnabled) log.Debug("XmlElement를 추가했습니다!!! 추가된 XmlElement=[{0}]", result); } return result; }