Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }