private static string GetNodeText(HtmlNode htmlNode, string attributeName, HtmlAnalysisAttributeEnum attributeEnum) { if (htmlNode == null) { return(null); } if (attributeEnum == HtmlAnalysisAttributeEnum.Text) { return(htmlNode.InnerText); } if (attributeEnum == HtmlAnalysisAttributeEnum.Html) { return(htmlNode.InnerHtml); } if (htmlNode.Attributes[attributeName] == null) { return(null); } return(htmlNode.Attributes[attributeName].Value); }
/// <summary> /// 获取内容 /// </summary> /// <typeparam name="T">基类类型,例:string</typeparam> /// <param name="htmlDocument">HtmlDocument</param> /// <param name="xPath">XPath 查询语句</param> /// <param name="attributeName">属性名称</param> /// <param name="attributeEnum">属性枚举</param> /// <returns></returns> public static T ToT <T>(HtmlDocument htmlDocument, string xPath, string attributeName, HtmlAnalysisAttributeEnum attributeEnum = HtmlAnalysisAttributeEnum.Attribute) { T t = default(T); HtmlNode documentNode = htmlDocument.DocumentNode; if (documentNode == null) { return(t); } HtmlNode htmlNode = documentNode.SelectSingleNode(xPath); if (htmlNode == null) { return(t); } string attributeValue = GetNodeText(htmlNode, attributeName, attributeEnum); if (string.IsNullOrEmpty(attributeValue)) { return(t); } t = (T)Convert.ChangeType(attributeValue, typeof(T)); return(t); }
/// <summary> /// 实体属性映射 Attribute 名称 /// </summary> /// <param name="name">属性所对应的 Attribute 名称</param> /// <param name="nameType">属性枚举</param> public HtmlAnalysisTAttribute(string name, HtmlAnalysisAttributeEnum nameType = HtmlAnalysisAttributeEnum.Attribute) { this.name = name; this.nameType = nameType; }
/// <summary> /// 返回基础类型数据列表 /// </summary> /// <typeparam name="T">基类类型,例:string</typeparam> /// <param name="htmlDocument">HtmlDocument</param> /// <param name="xPath">XPath 查询语句</param> /// <param name="attributeName">属性名称</param> /// <param name="attributeEnum">属性枚举</param> /// <returns></returns> public static List <T> ToList <T>(HtmlDocument htmlDocument, string xPath, string attributeName, HtmlAnalysisAttributeEnum attributeEnum = HtmlAnalysisAttributeEnum.Attribute) { HtmlNode documentNode = htmlDocument.DocumentNode; if (documentNode == null) { return(null); } List <T> dataList = new List <T>(); HtmlNodeCollection htmlNodeCollection = documentNode.SelectNodes(xPath); if (htmlNodeCollection == null || htmlNodeCollection.Count == 0) { return(null); } foreach (HtmlNode htmlNode in htmlNodeCollection) { string attributeValue = GetNodeText(htmlNode, attributeName, attributeEnum); if (!string.IsNullOrEmpty(attributeValue)) { dataList.Add((T)Convert.ChangeType(attributeValue, typeof(T))); } } return(dataList); }