private static TPage GetTPage(XmlNode xnPage) { TSave tsave = GetTSave(xnPage); TSave_M tsave_m = GetTSave_M(xnPage); TPage tp = new TPage(tsave, tsave_m); return(tp); }
private static TSave_M GetTSave_M(XmlNode xnPage) { XmlNode xnSave_m = xnPage.SelectSingleNode("./save_m"); if (xnSave_m == null) { return(null); } XmlNode xnRoot = xnSave_m.Attributes["root"]; string root = xnRoot == null ? "." : xnRoot.Value; List <TField> list = GetTFields(xnSave_m); TSave_M ts_m = new TSave_M(root, list); return(ts_m); }
public List <T> GetEntityList(string html, ParseConfig config) { TSave_M tsave_m = config.Page.TSave_M; if (tsave_m == null) { throw new ArgumentNullException(tsave_m.GetType().Name); } HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); List <T> obj = AnalyzeTSave_M(tsave_m, doc); return(obj); }
private List <T> AnalyzeTSave_M(TSave_M tsave_m, HtmlDocument doc) { string xRoot = tsave_m.RootxPath; List <TField> fields = tsave_m.TFields; HtmlNodeCollection hnc = doc.DocumentNode.SelectNodes(xRoot); if (hnc == null) { throw new Exception("root position failed " + xRoot); } XmlDocument xdResult = new XmlDocument(); XmlDeclaration dec = xdResult.CreateXmlDeclaration("1.0", null, null); xdResult.AppendChild(dec); XmlElement root = xdResult.CreateElement("ArrayOf" + type.Name); xdResult.AppendChild(root); foreach (HtmlNode hn in hnc) { foreach (TField tfield in fields) { XmlElement root_e = xdResult.CreateElement(type.Name); root.AppendChild(root_e); AnalyzeTField(tfield, hn, root_e, xdResult); } } using (StringReader reader = new StringReader(xdResult.OuterXml)) { List <T> obj = (List <T>)xs_list.Deserialize(reader); return(obj); } }