Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ReadXmlDiffgram()

void System.Data.DataSet.ReadXmlDiffgram ( XmlReader reader)
inlineprivate

Definition at line 1985 of file DataSet.cs.

1986 {
1987 long scopeId = DataCommonEventSource.Log.EnterScope("<ds.DataSet.ReadXmlDiffgram|INFO> {0}", ObjectID);
1988 try
1989 {
1990 int depth = reader.Depth;
1992 EnforceConstraints = false;
1993 bool flag = IsEmpty();
1995 if (flag)
1996 {
1997 dataSet = this;
1998 }
1999 else
2000 {
2001 dataSet = Clone();
2003 }
2004 foreach (DataTable table in dataSet.Tables)
2005 {
2007 }
2008 reader.MoveToContent();
2009 if (reader.LocalName != "diffgram" && reader.NamespaceURI != "urn:schemas-microsoft-com:xml-diffgram-v1")
2010 {
2011 return;
2012 }
2013 reader.Read();
2014 if (reader.NodeType == XmlNodeType.Whitespace)
2015 {
2016 MoveToElement(reader, reader.Depth - 1);
2017 }
2019 if (reader.Depth > depth)
2020 {
2021 if (reader.NamespaceURI != "urn:schemas-microsoft-com:xml-diffgram-v1" && reader.NamespaceURI != "urn:schemas-microsoft-com:xml-msdata")
2022 {
2024 XmlElement topNode = xmlDocument.CreateElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
2025 reader.Read();
2026 if (reader.NodeType == XmlNodeType.Whitespace)
2027 {
2028 MoveToElement(reader, reader.Depth - 1);
2029 }
2030 if (reader.Depth - 1 > depth)
2031 {
2032 XmlDataLoader xmlDataLoader = new XmlDataLoader(dataSet, IsXdr: false, topNode, ignoreSchema: false);
2034 xmlDataLoader.LoadData(reader);
2035 }
2036 ReadEndElement(reader);
2037 if (reader.NodeType == XmlNodeType.Whitespace)
2038 {
2039 MoveToElement(reader, reader.Depth - 1);
2040 }
2041 }
2042 if ((reader.LocalName == "before" && reader.NamespaceURI == "urn:schemas-microsoft-com:xml-diffgram-v1") || (reader.LocalName == "errors" && reader.NamespaceURI == "urn:schemas-microsoft-com:xml-diffgram-v1"))
2043 {
2044 XMLDiffLoader xMLDiffLoader = new XMLDiffLoader();
2045 xMLDiffLoader.LoadDiffGram(dataSet, reader);
2046 }
2047 while (reader.Depth > depth)
2048 {
2049 reader.Read();
2050 }
2051 ReadEndElement(reader);
2052 }
2053 foreach (DataTable table2 in dataSet.Tables)
2054 {
2055 if (table2.Rows._nullInList > 0)
2056 {
2057 throw ExceptionBuilder.RowInsertMissing(table2.TableName);
2058 }
2059 }
2061 foreach (DataTable table3 in dataSet.Tables)
2062 {
2063 DataRelation[] nestedParentRelations = table3.NestedParentRelations;
2064 DataRelation[] array = nestedParentRelations;
2065 foreach (DataRelation dataRelation in array)
2066 {
2067 if (dataRelation.ParentTable != table3)
2068 {
2069 continue;
2070 }
2071 foreach (DataRow row in table3.Rows)
2072 {
2073 DataRelation[] array2 = nestedParentRelations;
2074 foreach (DataRelation rel in array2)
2075 {
2076 row.CheckForLoops(rel);
2077 }
2078 }
2079 }
2080 }
2081 if (!flag)
2082 {
2083 Merge(dataSet);
2084 if (_dataSetName == "NewDataSet")
2085 {
2086 _dataSetName = dataSet._dataSetName;
2087 }
2089 }
2091 }
2092 finally
2093 {
2094 DataCommonEventSource.Log.ExitScope(scopeId);
2095 }
2096 }
string _dataSetName
Definition DataSet.cs:63
virtual DataSet Clone()
Definition DataSet.cs:977
void Merge(DataSet dataSet)
Definition DataSet.cs:2457
void ReadEndElement(XmlReader reader)
Definition DataSet.cs:1483
bool MoveToElement(XmlReader reader, int depth)
Definition DataSet.cs:1466
virtual XmlNodeType MoveToContent()
Definition XmlReader.cs:604
XmlNodeType NodeType
Definition XmlReader.cs:62

References System.Data.DataSet._dataSetName, System.array, System.Data.DataSet.Clone(), System.Xml.XmlReader.Depth, System.Runtime.Serialization.Dictionary, System.Data.DataSet.EnforceConstraints, System.Data.DataSet.IsEmpty(), System.Xml.XmlReader.LocalName, System.Data.DataCommonEventSource.Log, System.Data.DataSet.Merge(), System.Xml.XmlReader.MoveToContent(), System.Data.DataSet.MoveToElement(), System.Xml.XmlReader.NamespaceURI, System.Xml.XmlReader.NodeType, System.Data.DataSet.ObjectID, System.Xml.XmlReader.Prefix, System.Xml.XmlReader.Read(), System.Data.DataSet.ReadEndElement(), and System.Data.ExceptionBuilder.RowInsertMissing().

Referenced by System.Data.DataSet.ReadXml(), and System.Data.DataSet.ReadXml().