private static OnisepInstitution_Detail GetData(WebResult webResult) { XXElement xeSource = webResult.Http.zGetXDocument().zXXElement(); OnisepInstitution_Detail data = new OnisepInstitution_Detail(); data.SourceUrl = webResult.WebRequest.HttpRequest.Url; data.LoadFromWebDate = webResult.LoadFromWebDate; data.Id = GetKey(webResult.WebRequest.HttpRequest); XXElement xeData = xeSource.XPathElement("//div[@id='oni_content-page']//div[@class='oni_innerContent']//div[@id='oni_zoom-block']"); data.Institution = OnisepInstitution.Trim(xeData.XPathValue(".//h1/text()")); // <span class="oni_span-title">Code UAI : 0062080D</span> string s = OnisepInstitution.Trim(xeData.XPathValue(".//span[@class='oni_span-title']/text()")); if (s != null && s.StartsWith("Code UAI :", StringComparison.InvariantCultureIgnoreCase)) { data.UAICode = OnisepInstitution.Trim(s.Substring(10)); } XXElement xe = xeData.XPathElement(".//div[@class='oni_fiche-info-1']"); data.Address = OnisepInstitution.Trim(xe.XPathValue(".//span[@class='street-address']/text()")); data.PostalCode = OnisepInstitution.Trim(xe.XPathValue(".//span[@class='postal-code']/text()")); data.City = OnisepInstitution.Trim(xe.XPathValue(".//span[@class='locality']/text()")); data.Tel = OnisepInstitution.Trim(xe.XPathValue(".//span[@class='tel']/text()")); s = xe.XPathValues(".//p[@class='vcard']//text()").Select(OnisepInstitution.Trim).Where(t => t.StartsWith("Fax :", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (s != null) { data.Fax = OnisepInstitution.Trim(s.Substring(5)); } s = xe.XPathValue(".//a[@class='email']/@href"); if (s != null && s.StartsWith("mailto:", StringComparison.InvariantCultureIgnoreCase)) { s = s.Substring(7); } data.Mail = s; data.WebSite = xe.DescendantTextNodes().Where(xt => string.Equals(OnisepInstitution.Trim(xt.Value), "site :", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault() //.zXPathValue(".//following-sibling::a/@href"); .zXPathValue(".//following::a/@href"); foreach (XXElement xe2 in xeData.XPathElements(".//div[@class='oni_fiche-info-2']//li")) { string[] values = xe2.DescendantTexts().Take(2).ToArray(); if (values.Length != 2) { continue; } switch (OnisepInstitution.Trim(values[0]).ToLower()) { case "statut de l'établissement :": data.InstitutionStatus = OnisepInstitution.Trim(values[1]); break; case "hébergement :": data.Lodging = OnisepInstitution.Trim(values[1]); break; case "présence d'une ulis": data.Ulis = OnisepInstitution.Trim(values[1]); break; } } data.StudyLevels = xeData.XPathElements(".//div[@class='oni_nav-in']//ul[@class='oni_nav-in-ul']//li").Select(li => li.DescendantTexts().zConcatStrings()).Where(txt => txt != null).ToArray(); data.BacLevel = GetBacLevel(data.StudyLevels); // Address = text in <span class="street-address"> // PostalCode = text in <span class="postal-code"> // City = text in <span class="locality"> // Tel = text in <span class="tel"> // Fax = text start with "Fax :" // Mail = @href start with mailto: in <a class="email"> //bool address = false; //foreach (XNode node in xeData.XPathElement(".//div[@class='oni_fiche-info-1']//p[@class='vcard']").DescendantNodes()) //{ // if (node is XElement) // { // XElement xe = (XElement)node; // if (xe.Name == "span") // { // XAttribute attribute = xe.Attribute("class"); // if (attribute != null && attribute.Value == "street-address") // address = true; // } // else // address = false; // } // if (node is XText) // { // if (address) // { // data.Address = OnisepInstitution.Trim(((XText)node).Value); // address = false; // } // } //} if (__trace) { pb.Trace.WriteLine(data.zToJson()); } return(data); }