[ 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

創作者介紹
創作者 albert0956的部落格 的頭像
albert0956

albert0956的部落格

albert0956 發表在 痞客邦 留言(0) 人氣( 239 )