C# 获取Java脚本时间

public static string GetJavaScriptTime()
        {
            Int64 retval = 0;
            DateTime st = new DateTime(1970, 1, 1);
            TimeSpan t = (DateTime.Now - st);
            retval = (Int64)(t.TotalMilliseconds + 0.5);
            retval = retval + 1000000;
            return retval.ToString();
        }

C# 获取Javascript随机值

public static string GetJavascriptRandomValue()
        {
            Random ranDouble = new Random();
            string strd1 = ranDouble.NextDouble().ToString();
            int strd1len = strd1.Length;
            Random ranLong = new Random();
            string strd2 = ranLong.Next().ToString() + ranLong.Next().ToString();
            int intDefLength = 18;
            string strCutFromstrd2 = string.Empty;
            if (strd1len < intDefLength)
            {
                strCutFromstrd2 = strd2.Substring(0, intDefLength - strd1len);
            }
            string strRes = strd1 + strCutFromstrd2;
            return strRes;
        }

C# xml处理程序

/**
  * XmlHandler.NET
  * Version: Beta 1.0
  * Released: 10 Dec, 2007
  * Core Developer:Jegatheeswaran(JScriptLover@gmail.com)
  * Credits:Vasanthakumar(DrunkenProgrammer@gmail.com), Syed Vaisul Karne(SqlLover@gmail.com)  
  * Copyright (C) 2007

  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
  * as published by the Free Software Foundation; either version 2
  * of the License, or (at your option) any later version.

  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Lesser General Public License for more details.

  * You should have received a copy of the GNU Lesser General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  **/

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;
using System.Data;
using System.Web;

namespace ideaBubbling.Xml
{
    /// <summary>
    /// A table type xml file can be handled easily through this XmlHandler class
    /// </summary>
    public class XmlHandler
    {
        #region Private Memebers
        private string _RootElement;
        private string _SubRootElement;
        private string _XmlFileName;
        private string[] _XmlFieldNames;
        private Type[] _XmlFieldTypes;
        private string _XmlKeyField;
        private DataSet _DSXml;       
        private XmlDocument _XmlDoc;
        private int _RecordCount;
        private int _FieldCount;
        private bool _FileAutoGenerated;
        bool _IsIdentity;
        bool _IsKeyField;
        #endregion

        #region Properties
        public string File
        {
            get
            {
                return _XmlFileName;
            }
            set
            {
                this.Commit();
                _XmlFileName = value;
                if (IsValidFile())
                {
                    if (_DSXml.Tables.Count > 0)
                        _RecordCount = _DSXml.Tables[0].Rows.Count;
                    else
                        _RecordCount = 0;
                }
            }
        }
        public string RootElement
        {
            get
            {
                return _RootElement;
            } 
        }
        public string SubRootElement
        {
            get
            {
                return _SubRootElement;
            }
        }
        public string[] FieldNames
        {
            get
            {
                return _XmlFieldNames;
            }
        }
        //Count is renamed as RecordCount by Syed.
        public int RecordCount
        {
            get
            {
                return _RecordCount;
            }
        }
        #endregion

        #region Indexers
        public DataRow this[int pIndex]
        {
            get
            {
                return _DSXml.Tables[0].Rows[pIndex];
            }
        }
        #endregion

        #region Constructors
        private XmlHandler(){}

        /// <summary>
        /// To initialize the xml file with its structure
        /// </summary>
        /// <param name="pXmlFile">Xml file to be handled (Name with full path)</param>
        /// <param name="pFileAutoGenerated">If it is true, then the given xml file will be created if the file does not exist</param>
        /// <param name="pXmlStructure">Structure of the xml file.first "Root Element", then "Record element", then "multiple Field elements" ex:<Students><Student><Name/><Age/></Student></Students></param>
        public XmlHandler(string pXmlFile, bool pFileAutoGenerated, string pXmlStructure)
        {
            try
            {
                DataSet D = new DataSet();
                D = ConvertXMLToDataSet(pXmlStructure);
                if(D.Tables.Count!=1)
                    throw new Exception("Invalid xml structure");
                string[] fieldNames=new string[D.Tables[0].Columns.Count];
                for(int i=0;i<D.Tables[0].Columns.Count;i++)
                    fieldNames.SetValue(D.Tables[0].Columns[i].ColumnName, i);
                _FileAutoGenerated = pFileAutoGenerated;
                this.ConfigureXmlHandler(pXmlFile, D.DataSetName, D.Tables[0].TableName, fieldNames);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// To initialize the xml file with its root element, sub-root element and fields
        /// </summary>
        /// <param name="pXmlFile">Xml file to be handled (Name with full path)</param>
        /// <param name="pFileAutoGenerated">If it is true, then the given xml file will be created if the file does not exist</param>
        /// <param name="pRootElement">Root element of the xml file</param>
        /// <param name="pSubRootElement">Sub-Root element under the root element of the xml file</param>
        /// <param name="pFieldNames">Child tags' name under the sub-root element</param>
        public XmlHandler(string pXmlFile, bool pFileAutoGenerated, string pRootElement, string pSubRootElement, params string[] pFieldNames)
        {
            try
            {
                _FileAutoGenerated = pFileAutoGenerated;
                this.ConfigureXmlHandler(pXmlFile, pRootElement, pSubRootElement, pFieldNames);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// To initialize the xml file with its root element, sub-root element and fields
        /// </summary>
        /// <param name="pXmlFile">Xml file to be handled (Name with full path)</param>
        /// <param name="pFileAutoGenerated">If it is true, then the given xml file will be created if the file does not exist</param>
        /// <param name="pRootElement">Root element of the xml file</param>
        /// <param name="pSubRootElement">Sub-Root element under the root element of the xml file</param>
        /// <param name="pFieldNames">Child tags' name under the sub-root element</param>
        /// <param name="pFieldTypes">Child tags' data types</param>
        public XmlHandler(string pXmlFile, bool pFileAutoGenerated, string pRootElement, string pSubRootElement, string[] pFieldNames, Type[] pFieldTypes)
        {
            try
            {
                _FileAutoGenerated = pFileAutoGenerated;
                this.ConfigureXmlHandler(pXmlFile, pRootElement, pSubRootElement, pFieldNames);
                this.SetDataType(pFieldTypes);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Public Methods
        #region Add
        /// <summary>
        /// To append new child tags in xml file with the array of values
        /// </summary>
        /// <param name="pValues">Array of values</param>
        public void Add(params object[] pValues)
        {
            try
            {
                DataRow dr;
                if (_IsIdentity)
                {
                    int count = 0;
                    dr = _DSXml.Tables[0].NewRow();
                    if (pValues.Length >= _XmlFieldNames.Length)
                        throw new Exception("Invalid number of values");        //Extra Values
                    for (int i = 0; i < _XmlFieldNames.Length; i++)
                    {
                        if (dr.Table.Columns[i].AutoIncrement) continue;
                        if (pValues.Length == count) throw new Exception("Invalid number of values"); //Less number of values
                        dr[i] = pValues[count];
                        count++;
                    }
                    _DSXml.Tables[0].Rows.Add(dr);
                }
                else
                {
                    if (pValues.Length == _XmlFieldNames.Length)
                    {
                        dr = _DSXml.Tables[0].NewRow();
                        dr.ItemArray = pValues;
                        _DSXml.Tables[0].Rows.Add(dr);
                    }
                    else
                        throw new Exception("Invalid number of values");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// To append child tags with xml file with particular field(tag) values
        /// </summary>
        /// <param name="pFields">Array of field names (Tag names)</param>
        /// <param name="pValues">Corresponding values for array of field names</param>
        public void Add(string[] pFields, object[] pValues)
        {
            try
            {
                if (pValues.Length != pFields.Length && pFields.Length > 0)
                    throw new Exception("Number of fields differ from given number of values");
                DataRow dr = _DSXml.Tables[0].NewRow();
                for (int i = 0; i < pFields.Length; i++) dr[pFields[i].ToString()] = pValues[i];
                _DSXml.Tables[0].Rows.Add(dr);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// To append new child tags in xml file from DATA ROW
        /// </summary>
        /// <param name="pDR">Data row contains the values for xml file</param>
        public void Add(DataRow pDR)
        {
            try
            {
                this.Add(pDR.ItemArray);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// To append new child tags in xml file with the values from DATA TABLE
        /// </summary>
        /// <param name="pDT">Data table contains the values for xml file</param>
        public void Add(DataTable pDT)
        {
             try
             {
                 if (pDT == null) throw new Exception("DataTable parameter can not be null");
                 for (int i = 0; i < pDT.Rows.Count; i++) this.Add(pDT.Rows[i].ItemArray);
             }
             catch (Exception ex)
             {
                 throw ex;
             }
        }

        /// <summary>
        /// To append new child tags in xml file with the values from DATA SET
        /// </summary>
        /// <param name="pDS">Data set contains the values for xml file</param>
        public void Add(DataSet pDS)
        {
            try
            {
                if (pDS == null) throw new Exception("Dataset parameter can not be null");
                if(pDS.Tables.Count>0) this.Add(pDS.Tables[0]);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// To append a xml node
        /// </summary>
        /// <param name="pXN"></param>
        public void Add(XmlNode pXN)
        {
            try
            {
                this.Add(pXN.OuterXml);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

       

        /// <summary>
        /// To append the xml string in xml file
        /// </summary>
        /// <param name="XmlString">valid xml string</param>
        public void AddXml(string pXml)
        {
            try
            {
                if (IsValidXml(pXml)) this.Add(ConvertXMLToDataSet(pXml).Tables[0]);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Update
        /// <summary>
        /// This method updates the array of values into specified index of xml file
        /// </summary>
        /// <param name="pIndex">Index of the xml file data</param>
        /// <param name="pValues">Array of Values</param>
        public void Update(int pIndex, params object[] pValues)
        {
            try
            {
                if (pValues.Length != _XmlFieldNames.Length)
                    throw new Exception("Invalid number of values");
                if (_DSXml.Tables.Count > 0)
                {
                    if (_DSXml.Tables[0].Rows.Count > 0)
                    {
                        for (int i = 0; i < _XmlFieldNames.Length; i++)
                            _DSXml.Tables[0].Rows[pIndex][i] = pValues[i];   
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// This method updates the array of specified field(Tag) values into specified index of xml file
        /// </summary>
        /// <param name="pIndex">Index</param>
        /// <param name="pFields">Field Name (Tag Names)</param>
        /// <param name="pValues">Corresponding field values</param>
        public void Update(int pIndex, string[] pFields, object[] pValues)
        {
             try
             {
                 if (pFields.Length != pValues.Length)
                     throw new Exception("Number of fields differ from given number of values");
                 if(_DSXml.Tables.Count>0)
                 {
                     if(_DSXml.Tables[0].Rows.Count>0)
                     {
                         for(int i=0;i<pFields.Length;i++)
                             _DSXml.Tables[0].Rows[pIndex][pFields[i].ToString()] = pValues[i];
                     }
                 }
             }
             catch(Exception ex)
             {
                throw ex;
             }
        }
        /// <summary>
        /// This method updates an xml node into specified index of xml file
        /// </summary>
        /// <param name="pIndex">Index</param>
        /// <param name="pXN">Valid Xml Node</param>
        public void Update(int pIndex, XmlNode pXN)
        {
            try
            {
                this.Update(pIndex, pXN.OuterXml);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// This method updates DATA ROW values into specified index of xml file
        /// </summary>
        /// <param name="pIndex"></param>
        /// <param name="pDR"></param>
        public void Update(int pIndex, DataRow pDR)
        {
            try
            {
                this.Update(pIndex, pDR.ItemArray);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// This method updates the array of specified field(Tag) values in every records which 
        /// statisfy the specified condition
        /// </summary>
        /// <param name="pCondition">Valid conditional expression(SQL Standard)</param>
        /// <param name="pFields">Array of Field Names (Tag Names)</param>
        /// <param name="pValues">Corresponding values for the fields</param>
        public void Update(string pCondition, string[] pFields, object[] pValues)
        {
             try
             {
                 int index;
                 if (pFields.Length != pValues.Length)
                     throw new Exception("Number of field names differ from given number of values");
                 if(_DSXml.Tables.Count>0)
                 {
                     if(_DSXml.Tables[0].Rows.Count>0)
                     {
                         DataTable dt = _DSXml.Tables[0].Copy();
                         dt.Columns.Add("XmlHandlerIndexColumn");
                         for (int i = 0; i < dt.Rows.Count; i++) dt.Rows[i]["XmlHandlerIndexColumn"] = i;
                         DataView dv=new DataView(dt,pCondition,"",DataViewRowState.CurrentRows);
                         for(int i=0;i<dv.Count;i++) 
                         {
                             index = Convert.ToInt32(dv[i]["XmlHandlerIndexColumn"]);
                             this.Update(index, pFields, pValues);
                         }
                     }
                 }
             }
             catch(Exception ex)
             {
                throw ex;
             } 
        }
        /// <summary>
        /// This method updates specified field(Tag) values in every records which 
        /// statisfy the specified condition
        /// </summary>
        /// <param name="pCondition">Valid conditional expression(SQL Standard)</param>
        /// <param name="pFields">Field Name (Tag Name)</param>
        /// <param name="pValues">Field Value (Tag Value)</param>
        public void Update(string pCondition, string pFieldName, object pValue)
        {
            try
            {
                this.Update(pCondition, new string[] { pFieldName }, new object[] { pValue });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// This method updates the xml string into specified index of xml file
        /// </summary>
        /// <param name="pIndex">Index of the xml file data</param>
        /// <param name="pXmlString">Valid xml string</param>
        public void UpdateXml(int pIndex, string pXml)
        {
            try
            {
                if (IsValidXml(pXml)) this.Update(pIndex, ConvertXMLToDataSet(pXml).Tables[0].Rows[0].ItemArray);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Delete
        /// <summary>
        /// Remove the row of xml data at the specified index
        /// </summary>
        /// <param name="pIndex">Index of xml data to be deleted</param>
        public void Delete(int pIndex)
        {
            try
            {
                if (_DSXml.Tables.Count > 0)
                {
                    if (pIndex < 0 || pIndex >= _DSXml.Tables[0].Rows.Count) return;
                    _DSXml.Tables[0].Rows.RemoveAt(pIndex);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// Remove the rows of xml data for the specified condition
        /// </summary>
        /// <param name="pCondition">Valid Conditional Expression(SQL Standard)</param>
        public void Delete(string pCondition)
        {
             try
             {
                 if(_DSXml.Tables.Count>0)
                 {
                     DataTable dt = _DSXml.Tables[0].Copy();
                     dt.Columns.Add("XmlHandlerIndexColumn", typeof(int));
                     for (int i = 0; i < dt.Rows.Count; i++) dt.Rows[i]["XmlHandlerIndexColumn"] = i;
                     DataView dv=new DataView(dt,pCondition,"",DataViewRowState.CurrentRows);
                     if(dv.Count>0)
                     {
                         for (int i = 0; i < dv.Count; i++)
                              this.Delete(Convert.ToInt32(dv[i]["XmlHandlerIndexColumn"]) - i);
                     }
                 }
             }
             catch(Exception ex)
             {
                throw ex;
             }
         }

        /// <summary>
        /// Remove the row of xml data at the specified index
        /// </summary>
        /// <param name="pIndex">Index of xml data to be deleted</param>
        public void DeleteAll()
        {
            try
            {
                if (_DSXml.Tables.Count > 0)
                {
                    _DSXml.Tables[0].Rows.Clear();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Select
        /// <summary>
        /// select all data from xml file
        /// </summary>
        /// <returns></returns>
        public DataSet Select()
        {
            try
            {
                return _DSXml;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// selecting N-number of records from the specified start index
        /// </summary>
        /// <param name="pStartIndex">start index</param>
        /// <param name="pNoOfRecords">number of records to be selected</param>
        /// <returns></returns>
        public DataSet Select(int pStartIndex, int pNoOfRecords)
        {
             try
             {
                 DataSet D = new DataSet();
                 D.Tables.Add(this.SelectAsDataTable(pStartIndex, pNoOfRecords));
                 return D;
             }
             catch(Exception ex)
             {
                 throw ex;
             }
         }
        /// <summary>
        /// select particular data which are statisfying certain conditions
        /// </summary>
        /// <param name="pFilter">Valid conditional expression (SQL Standard)</param>
        /// <returns></returns>
        public DataSet Select(string pFilter)
        {
             try
             {
                 DataSet D = new DataSet();
                 D.Tables.Add(this.SelectAsDataTable(pFilter));
                 return D;
             }
             catch(Exception ex)
             {
                throw ex;
             }
        }


        /// <summary>
        /// select all data from xml file
        /// </summary>
        /// <returns></returns>
        public DataSet SelectAsDataset()
        {
            return this.Select();
        }
        /// <summary>
        /// selecting N-number of records from the specified start index
        /// </summary>
        /// <param name="pStartIndex">start index</param>
        /// <param name="pNoOfRecords">number of records to be selected</param>
        /// <returns></returns>
        public DataSet SelectAsDataset(int pStartIndex, int pNoOfRecords)
        {
            return this.Select(pStartIndex, pNoOfRecords);
        }
        /// <summary>
        /// select particular data which are statisfying certain conditions
        /// </summary>
        /// <param name="pFilter">Valid conditional expression (SQL Standard)</param>
        /// <returns></returns>
        public DataSet SelectAsDataset(string pFilter)
        {
            return this.Select(pFilter);
        }


        /// <summary>
        /// select all data from xml file
        /// </summary>
        /// <returns></returns>
        public DataTable SelectAsDataTable()
        {
            try
            {
                if (_DSXml.Tables.Count > 0)
                {
                    return _DSXml.Tables[0];
                }
                else
                {
                    DataTable dt = new DataTable(_SubRootElement);
                    for (int i = 0; i < _XmlFieldNames.Length; i++)
                    {
                        if (_XmlFieldTypes[i] != null)
                            dt.Columns.Add(_XmlFieldNames.GetValue(i).ToString(),_XmlFieldTypes[i]);
                        else
                            dt.Columns.Add(_XmlFieldNames.GetValue(i).ToString());
                    }
                    return dt;
                }
            }
            catch(Exception ex)
            {
                throw ex;
            } 
        }
        /// <summary>
        /// selecting N-number of records from the specified start index
        /// </summary>
        /// <param name="pStartIndex">start index</param>
        /// <param name="pNoOfRecords">number of records to be selected</param>
        /// <returns></returns>
        public DataTable SelectAsDataTable(int pStartIndex, int pNoOfRecords)
        {
            try
            {
                if (pStartIndex < 0)
                    throw new Exception("Invalid start index");
                if (pNoOfRecords < 0)
                    throw new Exception("Invalid no of records selection");
                if (_DSXml.Tables.Count > 0)
                {
                    DataTable dt = _DSXml.Tables[0].Copy();
                    dt.Clear();
                    for (int i = pStartIndex; i < (pStartIndex + pNoOfRecords); i++)
                    {
                        if (i >= _DSXml.Tables[0].Rows.Count) break;
                        dt.Rows.Add(_DSXml.Tables[0].Rows[i].ItemArray);
                    }
                    dt.AcceptChanges();
                    return dt;
                }
                else
                {
                    return this.SelectAsDataTable();
                }
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// select particular data which are statisfying certain conditions
        /// </summary>
        /// <param name="pFilter">Valid conditional expression (SQL Standard)</param>
        /// <returns></returns>
        public DataTable SelectAsDataTable(string pFilter)
        {
            try
            {
                if (_DSXml.Tables.Count > 0)
                {
                    DataView dv = new DataView(_DSXml.Tables[0], pFilter, "", DataViewRowState.CurrentRows);
                    return dv.ToTable();
                }
                else
                {
                    return this.SelectAsDataTable();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        
        /// <summary>
        /// select all xml value as string
        /// </summary>
        /// <returns></returns>
        public string SelectAsXml()
        {
            try
            {
                DataSet ds = this.SelectAsDataset();
                return ds.GetXml();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public string SelectAsXml(int pStartIndex, int pNoOfRecords)
        {
            try
            {
                DataSet ds = this.SelectAsDataset(pStartIndex, pNoOfRecords);
                return ds.GetXml();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public string SelectAsXml(string pFilter)
        {
            try
            {
                DataSet ds = this.SelectAsDataset(pFilter);
                return ds.GetXml();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Find
        /// <summary>
        /// This method returns the index of the xml file data which statisfies the specified condition
        /// </summary>
        /// <param name="pCondition">Valid conditional expression (SQL Standard)</param>
        /// <returns>Index</returns>
        public int Find(string pCondition)
        {
             try
             {
                 int index=-1;
                 if(_DSXml.Tables.Count>0)
                 {
                     DataTable dt = _DSXml.Tables[0].Copy();
                     dt.Columns.Add("XmlHandlerIndexColumn",typeof(int));
                     for (int i = 0; i < dt.Rows.Count; i++) dt.Rows[i]["XmlHandlerIndexColumn"] = i;
                     dt.AcceptChanges();
                     DataView dv=new DataView(dt,pCondition,"",DataViewRowState.CurrentRows);
                     if (dv.Count > 0) index = Convert.ToInt32(dv[0]["XmlHandlerIndexColumn"]);
                 }
                 return index;
             }
             catch(Exception ex)
             {
                throw ex;
             }
        }
        #endregion

        #region Insert
        /// <summary>
        /// Insert the specified set of values into the xml file at the specified index
        /// </summary>
        /// <param name="pIndex">Index where the values to be inserted</param>
        /// <param name="pValues">Set of values</param>
        public void Insert(int pIndex,params object[] pValues)
        {
            DataRow dr;
            if (_IsIdentity)
            {
                int count = 0;
                dr = _DSXml.Tables[0].NewRow();
                if (pValues.Length >= _XmlFieldNames.Length)
                    throw new Exception("Invalid number of values");        //Extra Values
                for (int i = 0; i < _XmlFieldNames.Length; i++)
                {
                    if (dr.Table.Columns[i].AutoIncrement) continue;
                    if (pValues.Length == count) throw new Exception("Invalid number of values"); //Less number of values
                    dr[i] = pValues[count];
                    count++;
                }
                _DSXml.Tables[0].Rows.InsertAt(dr,pIndex);
            }
            else
            {
                if (pValues.Length == _XmlFieldNames.Length)
                {
                    dr = _DSXml.Tables[0].NewRow();
                    dr.ItemArray = pValues;
                    _DSXml.Tables[0].Rows.InsertAt(dr, pIndex);
                }
                else
                    throw new Exception("Invalid number of values");
            }
        }
        
        /// <summary>
        /// Insert the specified xml node into the xml file at the specified index
        /// </summary>
        /// <param name="pIndex">Index where the values to be inserted</param>
        /// <param name="pXN">Valid xml node</param>
        public void Insert(int pIndex, XmlNode pXN)
        {
            try
            {
                this.Insert(pIndex, pXN.OuterXml);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Insert the specified data row into the xml file at the specified index
        /// </summary>
        /// <param name="pIndex">Index where the values to be inserted</param>
        /// <param name="pDR">DataRow</param>
        public void Insert(int pIndex, DataRow pDR)
        {
            try
            {
                this.Insert(pIndex, pDR.ItemArray);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Insert the specified xml data into the xml file at the specified index
        /// </summary>
        /// <param name="pIndex">Index where the values to be inserted</param>
        /// <param name="pXml">Valid xml string</param>
        public void InsertXML(int pIndex, string pXml)
        {
            try
            {
                if (IsValidXml(pXml)) this.Insert(pIndex, ConvertXMLToDataSet(pXml).Tables[0].Rows[0]);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion

        #region Set & Remove
        /// <summary>
        /// Setting the key field
        /// </summary>
        /// <param name="pFieldName"></param>
        public void SetKeyField(string pFieldName)
        {
            try
            {
                DataColumn[] dtColumns = new DataColumn[1];
                dtColumns[0] = _DSXml.Tables[0].Columns[pFieldName];
                _DSXml.Tables[0].PrimaryKey = dtColumns;
                _XmlKeyField = pFieldName;
                _IsKeyField = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Remove the key field
        /// </summary>
        public void RemoveKeyField()
        {
            _DSXml.Tables[0].PrimaryKey = null;
            _XmlKeyField = "";
            _IsKeyField = false;
        }

        /// <summary>
        /// Set the auto increment setting to the specified field
        /// </summary>
        /// <param name="pFieldName">Field name</param>
        public void SetAutoIncrement(string pFieldName)
        {
            try
            {
                int maxValue = 0,value=0;
                _DSXml.Tables[0].Columns[pFieldName].AutoIncrement = true;
                if(_DSXml.Tables[0].Rows.Count>0)
                    maxValue = Convert.ToInt32(_DSXml.Tables[0].Rows[0][pFieldName].ToString());
                for (int i = 1; i < _DSXml.Tables[0].Rows.Count; i++)
                {
                   value = Convert.ToInt32(_DSXml.Tables[0].Rows[i][pFieldName].ToString());
                   if (maxValue < value) maxValue = value;
                }
                _DSXml.Tables[0].Columns[pFieldName].AutoIncrementSeed = maxValue+1;
                _DSXml.Tables[0].Columns[pFieldName].AutoIncrementStep = 1;
                _IsIdentity = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Set the auto increment setting to the specified field
        /// </summary>
        /// <param name="pFieldName">Field name</param>
        /// <param name="pIncrementSeed">Increment Seed</param>
        /// <param name="pIncrementStep">Increment Step</param>
        public void SetAutoIncrement(string pFieldName, int pIncrementSeed, int pIncrementStep)
        {
            try
            {
                _DSXml.Tables[0].Columns[pFieldName].AutoIncrement = true;
                _DSXml.Tables[0].Columns[pFieldName].AutoIncrementSeed = pIncrementSeed;
                _DSXml.Tables[0].Columns[pFieldName].AutoIncrementStep = pIncrementStep;
                _IsIdentity = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Remove auto increment setting for the specified field
        /// </summary>
        /// <param name="pFieldName">Field name</param>
        public void RemoveAutoIncrement(string pFieldName)
        {
            int i = 0;
            _DSXml.Tables[0].Columns[pFieldName].AutoIncrement = false;
            for (i = 0; i < _DSXml.Tables[0].Columns.Count; i++)
            {
                if (_DSXml.Tables[0].Columns[i].AutoIncrement)
                {
                    _IsIdentity = true;
                    break;
                }
            }
            if (i >= _DSXml.Tables[0].Columns.Count) _IsIdentity = false;
        }

        /// <summary>
        /// Remove auto increment setting for all fields
        /// </summary>
        public void RemoveAutoIncrement()
        {
           for (int i = 0; i < _DSXml.Tables[0].Columns.Count; i++) _DSXml.Tables[0].Columns[i].AutoIncrement = false;
           _IsIdentity = false;
        }
        #endregion

        #region Transaction
        public void Commit()
        {
            HttpContext.Current.Application.Lock();
            _DSXml.WriteXml(_XmlFileName);
            HttpContext.Current.Application.UnLock();
        }

        public void RollBack()
        {
            _DSXml.ReadXml(_XmlFileName);
        }
        #endregion
        #endregion

        #region Public Static Method
        public static DataSet ConvertXMLToDataSet(string XmlString)
        {
            StringReader SR = null;
            XmlTextReader XTR = null;
            try
            {
                DataSet DS = new DataSet();
                SR = new StringReader(XmlString);
                XTR = new XmlTextReader(SR);
                DS.ReadXml(XTR);
                return DS;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (XTR != null) XTR.Close();
            }
        }

        public static string ConvertRawXMLToShowHTML(string XmlString)
        {
           return XmlString.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\n","<br/>");
        }

        public static int RandomNumber(int min, int max)
        {
            Random random = new Random();
            return random.Next(min, max);
        }

        public static string RandomString(int size, bool lowerCase)
        {
            StringBuilder builder = new StringBuilder();
            Random random = new Random();
            char ch;
            for (int i = 0; i < size; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                builder.Append(ch);
            }
            if (lowerCase)
                return builder.ToString().ToLower();
            return builder.ToString();
        }

        #endregion

        #region Private Methods
        private bool IsValidFile()
        {
            try
            {
                FileInfo fileInfo = new FileInfo(_XmlFileName);
                if (fileInfo.Extension.ToLower() != ".xml")
                    throw new Exception(_XmlFileName + " should be a xml file");
                if (!fileInfo.Exists && !_FileAutoGenerated)
                    throw new Exception(_XmlFileName + " does not exist");
                if (!fileInfo.Exists)
                {
                    _XmlDoc = new XmlDocument();
                    _XmlDoc.LoadXml("<" + RootElement + "></" + RootElement + ">");
                    _XmlDoc.Save(_XmlFileName);
                }
                _DSXml = new DataSet();
                _DSXml.ReadXml(_XmlFileName);
                if (_DSXml.Tables.Count > 1)
                    throw new Exception(_XmlFileName + " is not in a valid format");
                else if (_DSXml.Tables.Count > 0)
                {
                    if (_DSXml.DataSetName != _RootElement)
                        throw new Exception("Invalid root element");
                    if (_DSXml.Tables[0].TableName != _SubRootElement)
                        throw new Exception("Invalid sub root element");
                    if (_DSXml.Tables[0].Columns.Count != _XmlFieldNames.Length)
                        throw new Exception("Invalid number of fields");
                    for (int i = 0; i < _DSXml.Tables[0].Columns.Count; i++)
                    {
                        if (_DSXml.Tables[0].Columns[i].ColumnName != _XmlFieldNames.GetValue(i).ToString())
                            throw new Exception("Invalid field names");
                    }
                }
                else
                {
                    if (_DSXml.DataSetName != _RootElement)
                        throw new Exception("Invalid root element");
                    DataTable dt = new DataTable(_SubRootElement);
                    for (int i = 0; i < _XmlFieldNames.Length; i++) dt.Columns.Add(_XmlFieldNames.GetValue(i).ToString());
                    _DSXml.Tables.Add(dt);
                }
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private bool IsValidXml(string pXml)
        {
             try
             {
                 DataSet D=new DataSet();
                 D = ConvertXMLToDataSet(pXml);
                 if(D.Tables.Count!=1) throw new Exception("Invalid xml");
                 if (_IsIdentity)
                 {
                     int count = 0;
                     if (D.Tables[0].Columns.Count > _XmlFieldNames.Length)
                         throw new Exception("Invalid number of xml fields");
                     for (int i = 0; i < _XmlFieldNames.Length; i++)
                     {
                         if (_DSXml.Tables[0].Columns[i].AutoIncrement) continue;
                         if (count == D.Tables[0].Columns.Count) throw new Exception("Invalid number of fields");
                         if (D.Tables[0].Columns[count].ColumnName != _XmlFieldNames.GetValue(i).ToString())
                             throw new Exception("Invalid xml fields or the fields may be in disorder");
                         count++;
                     }
                 }
                 else
                 {
                     if (D.Tables[0].Columns.Count != _XmlFieldNames.Length)
                         throw new Exception("Invalid number of xml fields");
                     for (int i = 0; i < _XmlFieldNames.Length; i++)
                     {
                         if (D.Tables[0].Columns[i].ColumnName != _XmlFieldNames.GetValue(i).ToString())
                             throw new Exception("Invalid xml fields or the fields may be in disorder");
                     }
                 }
                 return true;
             }
             catch(Exception ex)
             {
                throw ex;
             }
        }     
        private void ConfigureXmlHandler(string pXmlFile, string pRootElement, string pSubRootElement, params string[] pFieldNames)
        {
            _RootElement = pRootElement;
            _SubRootElement = pSubRootElement;
            _XmlFieldNames = pFieldNames;
            _FieldCount = _XmlFieldNames.Length;
            _XmlFileName = pXmlFile;
            _XmlKeyField = "";
            _IsIdentity = false;
            _IsKeyField = false;
            if (_XmlFieldNames == null) throw new Exception("Xml file can not be without fields");
            if (_XmlFieldNames.Length == 0) throw new Exception("Xml file can not be without fields");
            if (IsValidFile())
            {
                if (_DSXml.Tables.Count > 0)
                    _RecordCount = _DSXml.Tables[0].Rows.Count;
                else
                    _RecordCount = 0;
            }
        }
        public void SetDataType(params Type[] pTypes)
        {
            try
            {
                string keyField = "";
                if (_XmlFieldNames.Length == pTypes.Length)
                {
                    DataSet ds = new DataSet(_RootElement);
                    DataTable dt = new DataTable(_SubRootElement);
                    for (int i = 0; i < _XmlFieldNames.Length; i++) dt.Columns.Add(_XmlFieldNames[i], pTypes[i]);
                    ds.Tables.Add(dt);
                    for (int i = 0; i < _DSXml.Tables[0].Rows.Count; i++) ds.Tables[0].Rows.Add(_DSXml.Tables[0].Rows[i].ItemArray);
                    for (int i = 0; i < _XmlFieldNames.Length; i++)
                    {
                        ds.Tables[0].Columns[i].AutoIncrement = _DSXml.Tables[0].Columns[i].AutoIncrement;
                        ds.Tables[0].Columns[i].AutoIncrementSeed = _DSXml.Tables[0].Columns[i].AutoIncrementSeed;
                        ds.Tables[0].Columns[i].AutoIncrementStep = _DSXml.Tables[0].Columns[i].AutoIncrementStep;
                    }
                    if (_IsKeyField)
                    {
                        DataColumn[] dtColumns = _DSXml.Tables[0].PrimaryKey;
                        DataColumn dtColumn = (DataColumn)dtColumns.GetValue(0);
                        keyField = dtColumn.ColumnName;
                    }
                    _DSXml = ds;
                    if (keyField != "") this.SetKeyField(keyField);
                    _RecordCount = _DSXml.Tables[0].Rows.Count;
                    _XmlFieldTypes = pTypes;
                }
                else
                {
                    throw new Exception("No of columns differ from given data types");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
    }
}

PHP 带有数组的strstr()和stristr()

<?php

function strstr_array( $haystack, $needle ) {
	if ( !is_array( $haystack ) ) {
		return false;
	}
	foreach ( $haystack as $element ) {
		if ( strstr( $element, $needle ) ) {
			return $element;
		}
	}
}

function stristr_array( $haystack, $needle ) {
	if ( !is_array( $haystack ) ) {
		return false;
	}
	foreach ( $haystack as $element ) {
		if ( stristr( $element, $needle ) ) {
			return $element;
		}
	}
}

?>

PHP 打印错误以在Drupal中的默认php5上进行筛选

<?php
ini_set('error_reporting',          E_ALL);
ini_set('display_errors',           'stdout');
?>

JavaScript Adobe AIR使用Sandbox Bridge打开新URL

//This code is placed in the root document header
//This function is written to run from the sandbox. It opens a url in an external browser
function openExternalURL(href) {
    var request = new air.URLRequest(href);
    try {            
        air.navigateToURL(request);
    }
    catch (e) {
        // handle error here
    }
}

//Create an object that will be used to expose AIR functionality to the browser sandbox
var Exposed = new Object();

//Exposed can now be read from the sandbox, so can the above function. The open url
//function is added as a method of the exposed object.
Exposed.openExternalURL = openExternalURL;

function doLoad() {
    //Place the Exposed object on the parentSandboxBridge property of the ui frame's window object.
    var frame = document.getElementById('UI').contentWindow.parentSandboxBridge = Exposed;
}
//doLoad is placed inline on the body tag.

//Now to run the external function from inside the sandbox use. The function expects
//an argument that contains a URL.
parentSandboxBridge.openExternalURL(href);

Ruby 在读取原子提要时解析HTML

# re-encode html escaped entities when reading atom feeds
def rss_html_parse(content)
  content.gsub!("<","<")
  content.gsub!(">",">")
  content.gsub!("\\","")
  content
end

CSS 清除修复

selector:after{
	clear:both;
	content:"--------------------------------------------------------------------";
	display:block;
	height:0;
	visibility:hidden;
}

Bash 记忆统计

#!/bin/bash
bean=`cat /proc/user_beancounters`
guar=`echo "$bean" | grep vmguar | awk '{ print $4;}'`
priv=`echo "$bean" | grep privvm | awk '{ print $2;}'`
let totl=guar/256
let used=priv/256
let free=$totl-$used
echo "                             "
echo "  #########################  "
echo "  #     Memory  Stats:    #  "
echo "  #########################  "
echo "                             "
echo "     Total......: $totl MB   "
echo "     In Use.....: $used MB   "
echo "     Available..: $free MB   "
echo "  =========================  "
echo "                             "

Bash 批量重命名目录中的文件

for F in * ; do NF=`echo $F | perl -lne "s/ /_/g; s/\._/./g; s/[',-]//g; print lc"` ; mv "$F" "$NF" ; done