[ 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 :