Exemplo n.º 1
0
            /// <summary>
            /// parses <see cref="InsertBatchQuery"/> from <paramref name="tableDataXmlNode"/>.
            /// </summary>
            /// <param name="tableDataXmlNode"></param>
            /// <returns>
            /// <see cref="InsertBatchQuery"/> parsed from <paramref name="tableDataXmlNode"/>
            /// </returns>
            /// <exception cref="InsertBatchQueryParseException">
            /// thrown if <see cref="InsertBatchQuery"/> parse failed
            /// </exception>
            public static InsertBatchQuery Parse(XmlNode tableDataXmlNode)
            {
                try
                {
                    InsertBatchQuery insertBatchQuery;

                    // get table name
                    string tableName = tableDataXmlNode.GetAttributeValue("name");

                    // parse InsertQueries from row data XmlNodeList
                    XmlNodeList rowDataXmlNodeList = tableDataXmlNode.GetNodes("row");

                    InsertQuery[] insertQueries = new InsertQuery[rowDataXmlNodeList.Count];

                    for (int i = 0; i < rowDataXmlNodeList.Count; i++)
                    {
                        XmlNode rowDataXmlNode = rowDataXmlNodeList[i];
                        insertQueries[i] = InsertQuery.Parse(rowDataXmlNode, tableName);
                    }

                    insertBatchQuery = new InsertBatchQuery(tableName, insertQueries);

                    return(insertBatchQuery);
                }
                catch (Exception exception)
                {
                    // exception while trying to parse InsertBatch
                    if (
                        exception is XmlNodeMissingNodeException ||
                        exception is XmlNodeMissingAttributeException ||
                        exception is InsertQueryParseException)
                    {
                        throw new InsertBatchQueryParseException(null, exception);
                    }
                    else // unhandled exception
                    {
                        throw exception;
                    }
                }
            }