[ ASP.NET XML資料讀取 ]
string x= @"<FormContext Id=""6E03A8E3614C4946825D8705CF24A472"">
<SameDept>Y</SameDept> <AppMgr>0011456</AppMgr> ...略... <ptDeptIn></ptDeptIn> </FormContext> "; int totalCount = 50000; for (int testMode = 1; testMode <= 3; testMode++) { Response.Write("<hr><b>"); if (testMode == 1) Response.Write("XmlDocument"); if (testMode == 2) Response.Write("XmlPathNavigator"); if (testMode == 3) Response.Write("RegularExpression"); Response.Write("</b>"); Response.Write("<br>Total Count=" + totalCount); DateTime st = DateTime.Now; Hashtable ht = new Hashtable(); for (int i = 0; i < totalCount; i++) { ht.Clear(); switch (testMode) { case 1: //XmlDocument XmlDocument xd = new XmlDocument(); xd.LoadXml(x); foreach (XmlNode n in xd.DocumentElement.ChildNodes) ht.Add(n.Name, n.InnerText); break; case 2: //XmlNavigator XmlTextReader xtr = new XmlTextReader(new StringReader(x)); XPathDocument xpd = new XPathDocument(xtr); XPathNavigator xpn = xpd.CreateNavigator(); xpn.MoveToFirstChild(); XPathNodeIterator xpni = xpn.SelectChildren(XPathNodeType.Element); while (xpni.MoveNext()) ht.Add(xpni.Current.Name, xpni.Current.Value); break; case 3: //Regular Expression foreach (Match m in Regex.Matches(x.Substring(1), "(?ims)<(?<tagName>.+?)>(?<text>.*?)</.+?>")) ht.Add(m.Groups["tagName"].Value, m.Groups["text"].Value); break; } } Response.Write("<br>Get Nodes Count=" + ht.Count); TimeSpan ts = DateTime.Now - st; Response.Write("<br>Duration=" + ts.Seconds + "." + ts.Milliseconds); } Result :
| XmlDocument Total Count=50000 Hashtable Count=22 Duration=3.468 |
XmlPathNavigator Total Count=50000 Hashtable Count=22 Duration=3.546 |
RegularExpression Total Count=50000 Hashtable Count=22 Duration=9.593 |
請先 登入 以發表留言。