System.Data.XmlDataTreeWriter.SaveDiffgramData C# (CSharp) Method

SaveDiffgramData() private method

private SaveDiffgramData ( XmlWriter xw, Hashtable rowsOrder ) : void
xw System.Xml.XmlWriter
rowsOrder System.Collections.Hashtable
return void
        internal void SaveDiffgramData(XmlWriter xw, Hashtable rowsOrder)
        {
            _xmlw = DataTextWriter.CreateWriter(xw);
            _isDiffgram = true;
            _rowsOrder = rowsOrder;

            int countTopTable = _topLevelTables.Length;

            string prefix = (_ds != null) ? ((_ds.Namespace.Length == 0) ? "" : _ds.Prefix) : ((_dt.Namespace.Length == 0) ? "" : _dt.Prefix);

            if (_ds == null || _ds.DataSetName == null || _ds.DataSetName.Length == 0)
                _xmlw.WriteStartElement(prefix, Keywords.DOCUMENTELEMENT, (_dt.Namespace == null) ? "" : _dt.Namespace);
            else
                _xmlw.WriteStartElement(prefix, XmlConvert.EncodeLocalName(_ds.DataSetName), _ds.Namespace);

            // new XmlTreeGen(true).Save(_ds,_xmlw, false /* we don't care since we specified it's serialized */);

            for (int i = 0; i < _dTables.Count; i++)
            {
                DataTable tempTable = ((DataTable)_dTables[i]);
                foreach (DataRow row in tempTable.Rows)
                {
                    if (row.RowState == DataRowState.Deleted)
                        continue;
                    int nestedParentRowCount = row.GetNestedParentCount();
                    if (nestedParentRowCount == 0)
                    {
                        DataTable tempDT = ((DataTable)_dTables[i]);
                        XmlDataRowWriter(row, tempDT.EncodedTableName);
                    }
                    else if (nestedParentRowCount > 1)
                    {
                        throw ExceptionBuilder.MultipleParentRows(tempTable.Namespace.Length == 0 ? tempTable.TableName : tempTable.Namespace + tempTable.TableName);
                        // At all times a nested row can only have 0 or 1 parents, never more than 1
                    }
                }
            }

            _xmlw.WriteEndElement();
            _xmlw.Flush();
        }