Esempio n. 1
0
 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);
 }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
 /// <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;
 }
Esempio n. 4
0
        /// <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);
        }