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

◆ ReadXml() [5/7]

XmlReadMode System.Data.DataTable.ReadXml ( XmlReader reader,
bool denyResolving )
inlinepackageinherited

Definition at line 5075 of file DataTable.cs.

5076 {
5077 IDisposable disposable = null;
5078 long scopeId = DataCommonEventSource.Log.EnterScope("<ds.DataTable.ReadXml|INFO> {0}, denyResolving={1}", ObjectID, denyResolving);
5079 try
5080 {
5081 disposable = TypeLimiter.EnterRestrictedScope(this);
5082 RowDiffIdUsageSection rowDiffIdUsageSection = default(RowDiffIdUsageSection);
5083 try
5084 {
5085 bool flag = false;
5086 bool flag2 = false;
5087 bool flag3 = false;
5088 bool isXdr = false;
5089 int num = -1;
5090 XmlReadMode result = XmlReadMode.Auto;
5091 rowDiffIdUsageSection.Prepare(this);
5092 if (reader == null)
5093 {
5094 return result;
5095 }
5096 bool flag4 = false;
5097 if (DataSet != null)
5098 {
5101 }
5102 else
5103 {
5105 EnforceConstraints = false;
5106 }
5107 if (reader is XmlTextReader)
5108 {
5109 ((XmlTextReader)reader).WhitespaceHandling = WhitespaceHandling.Significant;
5110 }
5112 XmlDataLoader xmlDataLoader = null;
5113 reader.MoveToContent();
5114 if (Columns.Count == 0 && IsEmptyXml(reader))
5115 {
5116 reader.Read();
5117 return result;
5118 }
5119 if (reader.NodeType == XmlNodeType.Element)
5120 {
5121 num = reader.Depth;
5122 if (reader.LocalName == "diffgram" && reader.NamespaceURI == "urn:schemas-microsoft-com:xml-diffgram-v1")
5123 {
5124 if (Columns.Count == 0)
5125 {
5126 if (reader.IsEmptyElement)
5127 {
5128 reader.Read();
5129 return XmlReadMode.DiffGram;
5130 }
5131 throw ExceptionBuilder.DataTableInferenceNotSupported();
5132 }
5133 ReadXmlDiffgram(reader);
5134 ReadEndElement(reader);
5136 return XmlReadMode.DiffGram;
5137 }
5138 if (reader.LocalName == "Schema" && reader.NamespaceURI == "urn:schemas-microsoft-com:xml-data")
5139 {
5140 ReadXDRSchema(reader);
5142 return XmlReadMode.ReadSchema;
5143 }
5144 if (reader.LocalName == "schema" && reader.NamespaceURI == "http://www.w3.org/2001/XMLSchema")
5145 {
5148 return XmlReadMode.ReadSchema;
5149 }
5150 if (reader.LocalName == "schema" && reader.NamespaceURI.StartsWith("http://www.w3.org/", StringComparison.Ordinal))
5151 {
5152 if (DataSet != null)
5153 {
5155 }
5156 else
5157 {
5159 }
5160 throw ExceptionBuilder.DataSetUnsupportedSchema("http://www.w3.org/2001/XMLSchema");
5161 }
5162 XmlElement xmlElement = xmlDocument.CreateElement(reader.Prefix, reader.LocalName, reader.NamespaceURI);
5163 if (reader.HasAttributes)
5164 {
5165 int attributeCount = reader.AttributeCount;
5166 for (int i = 0; i < attributeCount; i++)
5167 {
5168 reader.MoveToAttribute(i);
5169 if (reader.NamespaceURI.Equals("http://www.w3.org/2000/xmlns/"))
5170 {
5171 xmlElement.SetAttribute(reader.Name, reader.GetAttribute(i));
5172 continue;
5173 }
5174 XmlAttribute xmlAttribute = xmlElement.SetAttributeNode(reader.LocalName, reader.NamespaceURI);
5175 xmlAttribute.Prefix = reader.Prefix;
5176 xmlAttribute.Value = reader.GetAttribute(i);
5177 }
5178 }
5179 reader.Read();
5180 while (MoveToElement(reader, num))
5181 {
5182 if (reader.LocalName == "diffgram" && reader.NamespaceURI == "urn:schemas-microsoft-com:xml-diffgram-v1")
5183 {
5184 ReadXmlDiffgram(reader);
5185 ReadEndElement(reader);
5187 return XmlReadMode.DiffGram;
5188 }
5189 if (!flag2 && !flag && reader.LocalName == "Schema" && reader.NamespaceURI == "urn:schemas-microsoft-com:xml-data")
5190 {
5191 ReadXDRSchema(reader);
5192 flag2 = true;
5193 isXdr = true;
5194 continue;
5195 }
5196 if (reader.LocalName == "schema" && reader.NamespaceURI == "http://www.w3.org/2001/XMLSchema")
5197 {
5199 flag2 = true;
5200 continue;
5201 }
5202 if (reader.LocalName == "schema" && reader.NamespaceURI.StartsWith("http://www.w3.org/", StringComparison.Ordinal))
5203 {
5204 if (DataSet != null)
5205 {
5207 }
5208 else
5209 {
5211 }
5212 throw ExceptionBuilder.DataSetUnsupportedSchema("http://www.w3.org/2001/XMLSchema");
5213 }
5214 if (reader.LocalName == "diffgram" && reader.NamespaceURI == "urn:schemas-microsoft-com:xml-diffgram-v1")
5215 {
5216 ReadXmlDiffgram(reader);
5217 flag3 = true;
5218 result = XmlReadMode.DiffGram;
5219 continue;
5220 }
5221 flag = true;
5222 if (!flag2 && Columns.Count == 0)
5223 {
5224 XmlNode newChild = xmlDocument.ReadNode(reader);
5225 xmlElement.AppendChild(newChild);
5226 continue;
5227 }
5228 if (xmlDataLoader == null)
5229 {
5230 xmlDataLoader = new XmlDataLoader(this, isXdr, xmlElement, ignoreSchema: false);
5231 }
5232 xmlDataLoader.LoadData(reader);
5233 result = (flag2 ? XmlReadMode.ReadSchema : XmlReadMode.IgnoreSchema);
5234 }
5235 ReadEndElement(reader);
5236 xmlDocument.AppendChild(xmlElement);
5237 if (!flag2 && Columns.Count == 0)
5238 {
5239 if (IsEmptyXml(reader))
5240 {
5241 reader.Read();
5242 return result;
5243 }
5244 throw ExceptionBuilder.DataTableInferenceNotSupported();
5245 }
5246 if (xmlDataLoader == null)
5247 {
5248 xmlDataLoader = new XmlDataLoader(this, isXdr, ignoreSchema: false);
5249 }
5250 }
5252 return result;
5253 }
5254 finally
5255 {
5256 }
5257 }
5258 finally
5259 {
5260 disposable?.Dispose();
5261 DataCommonEventSource.Log.ExitScope(scopeId);
5262 }
5263 }
void RestoreEnforceConstraints(bool value)
Definition DataSet.cs:783
bool IsEmptyXml(XmlReader reader)
void ReadXmlSchema(Stream? stream)
void ReadXmlDiffgram(XmlReader reader)
DataColumnCollection Columns
Definition DataTable.cs:327
void RestoreConstraint(bool originalEnforceConstraint)
void ReadEndElement(XmlReader reader)
void ReadXDRSchema(XmlReader reader)
bool MoveToElement(XmlReader reader, int depth)
string? GetAttribute(string name)
bool MoveToAttribute(string name)
virtual bool HasAttributes
Definition XmlReader.cs:124
virtual XmlNodeType MoveToContent()
Definition XmlReader.cs:604
XmlNodeType NodeType
Definition XmlReader.cs:62
virtual string Name
Definition XmlReader.cs:65

References System.Data.DataTable._enforceConstraints, System.Xml.XmlReader.AttributeCount, System.Data.DataTable.Columns, System.Data.InternalDataCollectionBase.Count, System.Data.ExceptionBuilder.DataSetUnsupportedSchema(), System.Data.ExceptionBuilder.DataTableInferenceNotSupported(), System.Xml.XmlReader.Depth, System.Runtime.Serialization.Dictionary, System.Data.DataSet.EnforceConstraints, System.Data.DataTable.EnforceConstraints, System.Data.TypeLimiter.EnterRestrictedScope(), System.Xml.XmlReader.GetAttribute(), System.Xml.XmlReader.HasAttributes, System.Xml.XmlReader.IsEmptyElement, System.Data.DataTable.IsEmptyXml(), System.Xml.XmlReader.LocalName, System.Data.DataCommonEventSource.Log, System.Xml.XmlReader.MoveToAttribute(), System.Xml.XmlReader.MoveToContent(), System.Data.DataTable.MoveToElement(), System.Xml.XmlReader.Name, System.Xml.XmlReader.NamespaceURI, System.Xml.XmlReader.NodeType, System.Data.DataTable.ObjectID, System.Xml.XmlReader.Prefix, System.Xml.XmlReader.Read(), System.Data.DataTable.ReadEndElement(), System.Data.DataTable.ReadXDRSchema(), System.Data.DataTable.ReadXmlDiffgram(), System.Data.DataTable.ReadXmlSchema(), System.Data.DataTable.RestoreConstraint(), and System.Data.DataSet.RestoreEnforceConstraints().