Пример #1
0
        public static List <ResumeTraining> DeserializeTrainingExperiences(HtmlDocument document)
        {
            var node = document.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div/h3[1][. = '培训经历']");

            // From DeserializeTrainingExperiences/Not-Contains.html

            if (node == null)
            {
                return(null);
            }

            var experiences = new List <ResumeTraining>();

            while ((node = node.NextSibling) != null)
            {
                if (node.Name == "#text")
                {
                    continue;
                }

                if (node.Name != "h2")
                {
                    throw new FormatException($"Training experience node ({node.Name}) was unexpected.");
                }

                var experience = default(ResumeTraining);

                do
                {
                    if (node.Name == "#text")
                    {
                        continue;
                    }

                    if (node.Name != "h2")
                    {
                        break;
                    }

                    var match = Regex.Match(node.InnerText.Trim(), @"^(\d{4}\.\d{2})\s+-\s+(至今|\d{4}\.\d{2})(&nbsp;|\s){2,}(.*?)$");

                    // Sample was not found yet.

                    if (!match.Success)
                    {
                        throw new FormatException("Training experience format was unexpected.");
                    }

                    experiences.Add(experience = new ResumeTraining
                    {
                        Begin  = match.Result("$1"),
                        End    = match.Result("$2"),
                        Course = match.Result("$4")
                    });
                }while ((node = node.NextSibling) != null);

                if (node == null)
                {
                    break;
                }

                if (node.Name != "div")
                {
                    throw new FormatException($"Training experience node ({node.Name}) was unexpected.");
                }

                // From DeserializeTrainingExperiences/Standard.html

                var mapping = new Dictionary <string, string>
                {
                    { "培训机构", "" },
                    { "培训地点", "" },
                    { "培训描述", "" }
                };

                // From DeserializeTrainingExperiences/Standard.html

                foreach (var td in node.SelectNodes("table[1]/tr/td[1]"))
                {
                    var name = Regex.Match(td.InnerText.Trim(), "^(.{4}):$").Result("$1");

                    // Sample was not found yet.

                    if (name == null)
                    {
                        throw new FormatException("Training experience detail format was unexpected.");
                    }

                    // Sample was not found yet.

                    if (mapping.ContainsKey(name))
                    {
                        //throw new FormatException($"Training experience ({name}) was undefined.");
                        mapping[name] = td.SelectSingleNode("../td[2]").InnerHtml.Trim();
                    }
                }

                if (experience == null)
                {
                    continue;
                }

                experience.Institution = mapping["培训机构"];

                experience.Location = mapping["培训地点"];

                experience.Description = mapping["培训描述"];
                experience.Description = RemoveHtmlTag(experience.Description);
            }

            return(experiences);
        }
Пример #2
0
        public static SourceResume ConvertTo_Dtl_V5(string content)
        {
            var dto    = new SourceResume();
            var source = JsonConvert.DeserializeObject <dynamic>(content);

            dto.Id = source.resumeNo;
            var Dtl = JsonConvert.DeserializeObject <dynamic>(source.detialJSonStr.ToString());

            if (source.userDetials != null)
            {
                dto.Name               = source.userDetials.userName;
                dto.Gender             = source.userDetials.gender;
                dto.MaritalStatus      = source.userDetials.maritalStatus;
                dto.Cellphone          = source.userDetials.mobilePhone;
                dto.Email              = source.userDetials.email;
                dto.Birthday           = source.userDetials.birthStr;
                dto.CurrentResidence   = source.userDetials.cityId;
                dto.RegisteredResidenc = source.userDetials.hUKOUCityId;
            }
            else
            {
                dto.Name          = Dtl.UserMasterName;
                dto.Gender        = Dtl.Gender;
                dto.MaritalStatus = Dtl.MaritalStatus;
                dto.Birthday      = Dtl.BirthYear;
            }
            dto.ResumeId        = Dtl.ResumeId;
            dto.ResumeName      = Dtl.Name;
            dto.UserMasterId    = Dtl.UserMasterId;
            dto.UserMasterExtId = Dtl.UserMasterExtId;
            dto.ResumeNumber    = Dtl.ResumeNumber;
            dto.WorkStarts      = Dtl.WorkYearsRangeId;
            dto.Degree          = Dtl.CurrentEducationLevel;

            dto.JobStatus = Dtl.DesiredPosition[0].CurrentCareerStatus;
            dto.Intention = new ResumeIntention();
            if (Dtl.DesiredPosition != null && Dtl.DesiredPosition.Count > 0)
            {
                dto.Intention.JobType  = Dtl.DesiredPosition[0].DesiredEmploymentType;
                dto.Intention.Salary   = Dtl.DesiredPosition[0].DesiredSalaryScope;
                dto.Intention.Industry = Dtl.DesiredPosition[0].DesiredIndustry;
                dto.Intention.Function = Dtl.DesiredPosition[0].DesiredJobType;
                dto.Intention.Location = Dtl.DesiredPosition[0].DesiredCity;
            }
            else
            {
                dto.Intention.JobType  = "默认";
                dto.Intention.Salary   = "面议";
                dto.Intention.Industry = "默认";
                dto.Intention.Function = "中国";
                dto.Intention.Location = "中国";
            }

            if (Dtl.SelfEvaluate != null && Dtl.SelfEvaluate.Count > 0)
            {
                dto.Intention.Evaluation = Dtl.SelfEvaluate[0]?.CommentContent;
            }
            else
            {
                dto.Intention.Evaluation = "";
            }

            #region 工作经验

            if (Dtl.WorkExperience != null && Dtl.WorkExperience.Count > 0)
            {
                dto.Works = new List <ResumeWork>();
                foreach (var o in Dtl.WorkExperience)
                {
                    var work = new ResumeWork();
                    work.Begin       = o.DateStart;
                    work.End         = o.DateEnd;
                    work.Company     = o.CompanyName;
                    work.Industry    = o.CompanyIndustry;
                    work.Size        = o.CompanySize;
                    work.Nature      = o.CompanyProperty;
                    work.Department  = o.ResideDepartment;
                    work.Position    = o.JobTitle;
                    work.Description = o.WorkDescription;
                    dto.Works.Add(work);
                }
            }

            #endregion

            #region 项目经验

            if (Dtl.ProjectExperience != null && Dtl.ProjectExperience.Count > 0)
            {
                dto.Projects = new List <ResumeProject>();
                foreach (var o in Dtl.ProjectExperience)
                {
                    var project = new ResumeProject();
                    project.Begin       = o.DateStart;
                    project.End         = o.DateEnd;
                    project.Company     = "";
                    project.Name        = o.ProjectName;
                    project.Description = o.ProjectDescription;
                    project.Duty        = o.ProjectResponsibility;
                    dto.Projects.Add(project);
                }
            }

            #endregion

            #region 教育经历

            if (Dtl.EducationExperience != null && Dtl.EducationExperience.Count > 0)
            {
                dto.Educations = new List <ResumeEducation>();
                foreach (var o in Dtl.EducationExperience)
                {
                    var edu = new ResumeEducation();
                    edu.Begin       = o.DateStart;
                    edu.End         = o.DateEnd;
                    edu.School      = o.SchoolName;
                    edu.Degree      = o.EducationLevel;
                    edu.Description = "";
                    edu.Major       = o.MajorName;
                    dto.Educations.Add(edu);
                }
            }

            #endregion

            #region 培训经历

            if (Dtl.Training != null && Dtl.Training.Count > 0)
            {
                dto.Trainings = new List <ResumeTraining>();
                foreach (var o in Dtl.Training)
                {
                    var train = new ResumeTraining();
                    train.Begin       = o.DateStart;
                    train.End         = o.DateEnd;
                    train.Course      = o.Course;
                    train.Institution = o.Institution;
                    train.Description = o.TrainingDescription;
                    train.Location    = o.Location;
                    dto.Trainings.Add(train);
                }
            }

            #endregion

            #region 技能/语言
            if (Dtl.ProfessionnalSkill != null && Dtl.ProfessionnalSkill.Count > 0)
            {
                dto.Skills = new List <ResumeSkill>();
                foreach (var o in Dtl.ProfessionnalSkill)
                {
                    var skill = new ResumeSkill {
                        Name = o.SkillName, Level = o.MasterDegree.ToString() + "|" + o.UsedMonths.ToString() + "个月", Description = ""
                    };
                    dto.Skills.Add(skill);
                }
            }
            if (Dtl.LanguageSkill != null && Dtl.LanguageSkill.Count > 0)
            {
                if (dto.Skills == null)
                {
                    dto.Skills = new List <ResumeSkill>();
                }
                foreach (var o in Dtl.LanguageSkill)
                {
                    var skill = new ResumeSkill {
                        Name = o.LanguageName, Level = "听说" + o.HearSpeakSkill.ToString() + "|读写" + o.ReadWriteSkill.ToString(), Description = ""
                    };
                    dto.Skills.Add(skill);
                }
            }
            #endregion

            #region 证书

            if (Dtl.AchieveCertificate != null && Dtl.AchieveCertificate.Count > 0)
            {
                dto.Certificates = new List <ResumeCertificate>();
                foreach (var o in Dtl.AchieveCertificate)
                {
                    try
                    {
                        var cert = new ResumeCertificate {
                            Time = Convert.ToDateTime(o.AchieveDate), CertName = o.CertificateName, Description = o.CertificateDescription
                        };

                        dto.Certificates.Add(cert);
                    }
                    catch
                    {
                        // ignored
                    }
                }
            }
            #endregion

            #region 校内荣誉
            if (Dtl.AchieveAward != null && Dtl.AchieveAward.Count > 0)
            {
                dto.Honors = new List <SchoolHonor>();
                foreach (var o in Dtl.AchieveAward)
                {
                    try
                    {
                        var cert = new SchoolHonor {
                            Time = o.AchieveDate, Honor = o.AwardName, Description = o.Description
                        };

                        dto.Honors.Add(cert);
                    }
                    catch
                    {
                        // ignored
                    }
                }
            }
            #endregion

            #region 校内实践

            if (Dtl.PracticeExperience != null && Dtl.PracticeExperience.Count > 0)
            {
                dto.Practices = new List <SchoolPractice>();
                foreach (var o in Dtl.PracticeExperience)
                {
                    try
                    {
                        var cert = new SchoolPractice {
                            Name = o.PracticeName, Begin = o.DateStart, End = o.DateEnd, Description = o.PracticeDescription
                        };

                        dto.Practices.Add(cert);
                    }
                    catch
                    {
                        // ignored
                    }
                }
            }
            #endregion

            #region 其他

            if (Dtl.Other != null && Dtl.Other.Count > 0)
            {
                dto.Others = new List <OtherInfo>();
                foreach (var o in Dtl.Other)
                {
                    try
                    {
                        var cert = new OtherInfo {
                            Title = o.Name, Description = o.Description
                        };

                        dto.Others.Add(cert);
                    }
                    catch
                    {
                        // ignored
                    }
                }
            }
            #endregion
            return(dto);
        }