/// <summary> /// 初始化配置 /// </summary> public void Init() { var configpath = IO.PathMg.CheckPath(DBConfigPath); //组合路径 var xmlwr = new IO.XmlHelper(configpath); //XML读取器 InitConnectionSetting(xmlwr); //初始化连接 InitModelSetting(xmlwr); //初始化对象配置 }
/// <summary> /// 生成节点 /// </summary> /// <param name="name">节点名</param> /// <param name="value">节点值</param> /// <param name="xmlwr">写对象</param> /// <param name="parent">父节点</param> protected static XmlNode CreateNode(string name, string value, IO.XmlHelper xmlwr, XmlNode parent) { if (!string.IsNullOrWhiteSpace(value) && parent != null) { var rsstitle = xmlwr.CreateNewNode(parent, XmlNodeType.Element, name); rsstitle.InnerText = value; return(rsstitle); } return(null); }
/// <summary> /// 获取二个SVN库或者标签之间的差异 /// </summary> /// <param name="url1"></param> /// <param name="url2"></param> /// <returns></returns> public List <DiffFile> GetDiff(string url1, string url2, string username = "", string password = "", string path = "", Func <string, string> fun = null) { var command = string.Format(SVNDiffCommand, _svnFileName, CreateLoginInfo(username, password), url1, url2); //执行查异化命令 var result = RunSvnCommand(path, command, fun); var index = result.IndexOf("<?xml"); var end = result.IndexOf("</diff>") - index + 7; var diffs = new List <DiffFile>();//差异集合 if (index >= 0 && end > 0) { var xmldoc = result.Substring(index, end);//截取XML var xmlwr = new IO.XmlHelper(); xmlwr.LoadXmlString(xmldoc); //获取需要的path节点信息 var nodes = xmlwr.GetNodeListByDelegate(delegate(System.Xml.XmlNode xn) { return(xn.Name.Equals("path", StringComparison.CurrentCultureIgnoreCase) && xn.ParentNode != null && xn.ParentNode.Name.Equals("paths", StringComparison.CurrentCultureIgnoreCase)); }); if (nodes != null) { foreach (System.Xml.XmlNode cn in nodes) { var df = new DiffFile(); var item = IO.XmlHelper.ReadAttributeValue(cn, "item");//获取类型 if (!string.IsNullOrWhiteSpace(item)) { switch (item.ToLower().Trim()) { case "added": { df.DiffType = DiffFile.EnumDiff.Add; break; } case "modified": { df.DiffType = DiffFile.EnumDiff.Update; break; } case "deleted": { df.DiffType = DiffFile.EnumDiff.Delete; break; } } } var kind = IO.XmlHelper.ReadAttributeValue(cn, "kind");//获取文件类型file or dir df.FileType = (DiffFile.EnumFileType)Enum.Parse(typeof(DiffFile.EnumFileType), kind, true); df.Url = cn.InnerText; diffs.Add(df); } } } return(diffs); }
/// <summary> /// 把RSS项转为xml节点 /// </summary> /// <param name="item">RSS项信息</param> /// <returns></returns> protected XmlNode CreateRssItem(RssItem item, IO.XmlHelper xmlwr, XmlNode parent) { var xn = xmlwr.CreateNewNode(parent, XmlNodeType.Element, "item"); CreateNode("title", item.Title, xmlwr, xn); CreateNode("link", item.Link, xmlwr, xn); CreateNode("description", item.Description, xmlwr, xn); CreateNode("pubDate", item.PubDate.ToString("yyyy/MM/dd HH:mm:ss"), xmlwr, xn); CreateNode("category", item.Cagtegory, xmlwr, xn); CreateNode("author", item.Author, xmlwr, xn); CreateNode("guid", item.Guid, xmlwr, xn); return(xn); }
/// <summary> /// 获取节点的值 /// </summary> /// <param name="name"></param> /// <param name="parentName"></param> /// <param name="xmlwr"></param> /// <returns></returns> protected string GetNodeValue(string name, string parentName, IO.XmlHelper xmlwr) { var node = xmlwr.GetNodeByDelegate((XmlNode xn) => { return(xn.Name.Equals(name, StringComparison.OrdinalIgnoreCase) && (string.IsNullOrWhiteSpace(parentName) || (xn.ParentNode != null && xn.ParentNode.Name.Equals(parentName, StringComparison.OrdinalIgnoreCase)))); }); if (node != null) { return(node.InnerText); } return(""); }
/// <summary> /// 初始化对象配置 /// </summary> /// <param name="xmlwr"></param> private void InitModelSetting(IO.XmlHelper xmlwr) { var modelnodes = xmlwr.GetNodeListByDelegate(delegate(XmlNode xn) { return(xn.Name.Equals(ModelSettingNodeName, StringComparison.CurrentCultureIgnoreCase) && xn.ParentNode != null && xn.ParentNode.Name.Equals(ModelSettingParentNodeName, StringComparison.CurrentCultureIgnoreCase)); }); if (modelnodes != null) { ModelSettings = new List <ModelSetting>(); foreach (var xn in modelnodes) { var model = new ModelSetting(); model.Contract = IO.XmlHelper.ReadAttributeValue(xn, "contract"); //读取类型 model.TableName = IO.XmlHelper.ReadAttributeValue(xn, "TableName/value"); //表名 model.PrimaryKey = IO.XmlHelper.ReadAttributeValue(xn, "PrimaryKey/value"); //表的主健 //model.Fields = IO.XmlWR.ReadAttributeValue(xn, "Model/Fields/value");//字段 model.Mapping = IO.XmlHelper.ReadAttributeValue(xn, "Mapping/value"); //获取映射 foreach (XmlNode cn in xn.ChildNodes) { if (cn.Name.Equals(SelectNodeName, StringComparison.OrdinalIgnoreCase))//查询字段 { model.Selects = GetCommandFromNode(cn); } else if (cn.Name.Equals(InsertNodeName, StringComparison.OrdinalIgnoreCase))//新增需要插入的字段 { model.InsertCommands = GetCommandFromNode(cn); } else if (cn.Name.Equals(UpdateNodeName, StringComparison.OrdinalIgnoreCase))//修改需要插入的字段 { model.UpdateCommands = GetCommandFromNode(cn); } } ModelSettings.Add(model); } } }
/// <summary> /// 初始化连接字符串 /// </summary> /// <param name="xmlwr"></param> private void InitConnectionSetting(IO.XmlHelper xmlwr) { var connodes = xmlwr.GetNodeListByDelegate(delegate(XmlNode xn) { return(xn.Name.Equals(ConSettingNodeName, StringComparison.CurrentCultureIgnoreCase) && xn.ParentNode != null && xn.ParentNode.Name.Equals(ConSettingParentNodeName, StringComparison.CurrentCultureIgnoreCase)); }); if (connodes != null) { ConSettings = new List <ConnSetting>(); foreach (var xn in connodes) { var con = new ConnSetting() { ConnectionString = IO.XmlHelper.ReadAttributeValue(xn, "connectionString"), //读取连接字符串 Name = IO.XmlHelper.ReadAttributeValue(xn, "name"), //读取配置名 ProviderName = IO.XmlHelper.ReadAttributeValue(xn, "providerName") //读取驱动 }; ConSettings.Add(con); } } }
/// <summary> /// 初始化配置 /// </summary> public void Init() { var configpath = IO.PathMg.CheckPath(DBConfigPath);//组合路径 var xmlwr = new IO.XmlHelper(configpath);//XML读取器 InitConnectionSetting(xmlwr);//初始化连接 InitModelSetting(xmlwr);//初始化对象配置 }
/// <summary> /// 通过RSS内容获取整个信息 /// </summary> /// <param name="rssContent">内容</param> /// <returns></returns> protected void FromRss(string rssContent) { var xmlwr = new IO.XmlHelper();//读取器 xmlwr.LoadXmlString(rssContent); this.Title = GetNodeValue("title", "channel", xmlwr); this.Description = GetNodeValue("description", "channel", xmlwr); this.Docs = GetNodeValue("docs", "channel", xmlwr); this.Generator = GetNodeValue("generator", "channel", xmlwr); this.Language = GetNodeValue("language", "channel", xmlwr); this.Link = GetNodeValue("link", "channel", xmlwr); this.ManagingEditor = GetNodeValue("managingeditor", "channel", xmlwr); this.WebMaster = GetNodeValue("WebMaster", "channel", xmlwr); //获取子项 var nodes = xmlwr.GetNodeListByDelegate(delegate(XmlNode xn) { return(xn.Name.Equals("item", StringComparison.CurrentCultureIgnoreCase)); }); Items.Clear(); foreach (var xn in nodes) { if (xn.ChildNodes != null) { var item = new RssItem(); foreach (XmlNode chn in xn.ChildNodes) { switch (chn.Name.ToLower()) { case "title": { item.Title = chn.InnerText; break; } case "link": { item.Link = chn.InnerText; break; } case "description": { item.Description = chn.InnerText; break; } case "author": { item.Author = chn.InnerText; break; } case "comments": { item.Comments = chn.InnerText; break; } case "pubdate": { DateTime dt; if (DateTime.TryParse(chn.InnerText, out dt)) { item.PubDate = dt; } break; } case "category": { item.Cagtegory = chn.InnerText; break; } case "guid": { item.Guid = chn.InnerText; break; } } } Items.Add(item); } } }