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

◆ ForceFoliation()

void System.Xml.XmlDataDocument.ForceFoliation ( XmlBoundElement node,
ElementState newState )
inlineprivate

Definition at line 534 of file XmlDataDocument.cs.

535 {
537 {
538 if (node.ElementState != ElementState.Defoliated)
539 {
540 return;
541 }
542 node.ElementState = ElementState.Foliating;
544 IgnoreXmlEvents = true;
545 try
546 {
547 XmlNode xmlNode = null;
548 DataRow row = node.Row;
549 DataRowVersion version = ((row.RowState == DataRowState.Detached) ? DataRowVersion.Proposed : DataRowVersion.Current);
550 foreach (DataColumn column in row.Table.Columns)
551 {
552 if (IsNotMapped(column))
553 {
554 continue;
555 }
556 object value = row[column, version];
557 if (!Convert.IsDBNull(value))
558 {
559 if (column.ColumnMapping == MappingType.Attribute)
560 {
561 node.SetAttribute(column.EncodedColumnName, column.Namespace, column.ConvertObjectToXml(value));
562 continue;
563 }
564 XmlNode xmlNode2 = null;
565 if (column.ColumnMapping == MappingType.Element)
566 {
567 xmlNode2 = new XmlBoundElement(string.Empty, column.EncodedColumnName, column.Namespace, this);
568 xmlNode2.AppendChild(CreateTextNode(column.ConvertObjectToXml(value)));
569 if (xmlNode != null)
570 {
571 node.InsertAfter(xmlNode2, xmlNode);
572 }
573 else if (node.FirstChild != null)
574 {
575 node.InsertBefore(xmlNode2, node.FirstChild);
576 }
577 else
578 {
579 node.AppendChild(xmlNode2);
580 }
582 }
583 else
584 {
585 xmlNode2 = CreateTextNode(column.ConvertObjectToXml(value));
586 if (node.FirstChild != null)
587 {
588 node.InsertBefore(xmlNode2, node.FirstChild);
589 }
590 else
591 {
592 node.AppendChild(xmlNode2);
593 }
594 if (xmlNode == null)
595 {
597 }
598 }
599 }
600 else if (column.ColumnMapping == MappingType.SimpleContent)
601 {
602 XmlAttribute xmlAttribute = CreateAttribute("xsi", "nil", "http://www.w3.org/2001/XMLSchema-instance");
603 xmlAttribute.Value = "true";
604 node.SetAttributeNode(xmlAttribute);
605 _bHasXSINIL = true;
606 }
607 }
608 }
609 finally
610 {
613 }
615 }
616 }
bool IsNotMapped(DataColumn c)
void OnFoliated(XmlNode node)
virtual XmlText CreateTextNode(string? text)
XmlAttribute CreateAttribute(string name)

References System.Xml.XmlDataDocument._bHasXSINIL, System.Xml.XmlDataDocument._foliationLock, System.Xml.XmlDocument.CreateAttribute(), System.Xml.XmlDocument.CreateTextNode(), System.Xml.Dictionary, System.Xml.XmlDataDocument.IgnoreXmlEvents, System.Convert.IsDBNull(), System.Xml.XmlDataDocument.IsNotMapped(), System.Xml.XmlDataDocument.OnFoliated(), and System.value.

Referenced by System.Xml.XmlDataDocument.EnsureFoliation(), System.Xml.XmlDataDocument.Foliate(), System.Xml.XmlDataDocument.OnAddRow(), and System.Xml.XmlDataDocument.OnColumnValueChanged().