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

◆ ReadXmlDiffgram()

void System.Data.DataTable.ReadXmlDiffgram ( XmlReader reader)
inlineprivateinherited

Definition at line 5545 of file DataTable.cs.

5546 {
5547 int depth = reader.Depth;
5549 EnforceConstraints = false;
5550 bool flag;
5552 if (Rows.Count == 0)
5553 {
5554 flag = true;
5555 dataTable = this;
5556 }
5557 else
5558 {
5559 flag = false;
5560 dataTable = Clone();
5562 }
5564 reader.MoveToContent();
5565 if (reader.LocalName != "diffgram" && reader.NamespaceURI != "urn:schemas-microsoft-com:xml-diffgram-v1")
5566 {
5567 return;
5568 }
5569 reader.Read();
5570 if (reader.NodeType == XmlNodeType.Whitespace)
5571 {
5572 MoveToElement(reader, reader.Depth - 1);
5573 }
5575 if (reader.Depth > depth)
5576 {
5577 if (reader.NamespaceURI != "urn:schemas-microsoft-com:xml-diffgram-v1" && reader.NamespaceURI != "urn:schemas-microsoft-com:xml-msdata")
5578 {
5580 XmlElement topNode = xmlDocument.CreateElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
5581 reader.Read();
5582 if (reader.Depth - 1 > depth)
5583 {
5584 XmlDataLoader xmlDataLoader = new XmlDataLoader(dataTable, IsXdr: false, topNode, ignoreSchema: false);
5586 xmlDataLoader.LoadData(reader);
5587 }
5588 ReadEndElement(reader);
5589 }
5590 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"))
5591 {
5592 XMLDiffLoader xMLDiffLoader = new XMLDiffLoader();
5593 xMLDiffLoader.LoadDiffGram(dataTable, reader);
5594 }
5595 while (reader.Depth > depth)
5596 {
5597 reader.Read();
5598 }
5599 ReadEndElement(reader);
5600 }
5601 if (dataTable.Rows._nullInList > 0)
5602 {
5603 throw ExceptionBuilder.RowInsertMissing(dataTable.TableName);
5604 }
5607 list.Add(this);
5608 CreateTableList(this, list);
5609 for (int i = 0; i < list.Count; i++)
5610 {
5611 DataRelation[] nestedParentRelations = list[i].NestedParentRelations;
5612 DataRelation[] array = nestedParentRelations;
5613 foreach (DataRelation dataRelation in array)
5614 {
5615 if (dataRelation == null || dataRelation.ParentTable != list[i])
5616 {
5617 continue;
5618 }
5619 foreach (DataRow row in list[i].Rows)
5620 {
5621 DataRelation[] array2 = nestedParentRelations;
5622 foreach (DataRelation rel in array2)
5623 {
5624 row.CheckForLoops(rel);
5625 }
5626 }
5627 }
5628 }
5629 if (!flag)
5630 {
5632 }
5634 }
void Merge(DataTable table)
DataRowCollection Rows
Definition DataTable.cs:701
void CreateTableList(DataTable currentTable, List< DataTable > tableList)
void ReadEndElement(XmlReader reader)
virtual DataTable Clone()
bool MoveToElement(XmlReader reader, int depth)
virtual XmlNodeType MoveToContent()
Definition XmlReader.cs:604
XmlNodeType NodeType
Definition XmlReader.cs:62

References System.array, System.Data.DataTable.Clone(), System.Data.DataRowCollection.Count, System.Data.DataTable.CreateTableList(), System.Xml.XmlReader.Depth, System.Runtime.Serialization.Dictionary, System.Data.DataTable.EnforceConstraints, System.list, System.Xml.XmlReader.LocalName, System.Data.DataTable.Merge(), System.Xml.XmlReader.MoveToContent(), System.Data.DataTable.MoveToElement(), System.Xml.XmlReader.NamespaceURI, System.Xml.XmlReader.NodeType, System.Xml.XmlReader.Prefix, System.Xml.XmlReader.Read(), System.Data.DataTable.ReadEndElement(), System.Data.ExceptionBuilder.RowInsertMissing(), and System.Data.DataTable.Rows.

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