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

◆ WriteStartElement() [6/6]

void System.Xml.Serialization.XmlSerializationWriter.WriteStartElement ( string name,
string? ns,
object? o,
bool writePrefixed,
XmlSerializerNamespaces? xmlns )
inlineprotected

Definition at line 532 of file XmlSerializationWriter.cs.

533 {
534 if (o != null && _objectsInUse != null)
535 {
537 {
539 }
541 }
542 string prefix = null;
543 bool flag = false;
544 if (_namespaces != null)
545 {
548 {
549 if (string.IsNullOrEmpty(ns2))
550 {
551 flag = true;
552 }
553 if (ns != ns2)
554 {
555 writePrefixed = true;
556 }
557 }
559 }
560 if (writePrefixed && prefix == null && ns != null && ns.Length > 0)
561 {
562 prefix = _w.LookupPrefix(ns);
563 if (prefix == null || prefix.Length == 0)
564 {
565 prefix = NextPrefix();
566 }
567 }
568 if (prefix == null)
569 {
570 xmlns?.TryLookupPrefix(ns, out prefix);
571 }
572 if (flag && prefix == null && ns != null && ns.Length != 0)
573 {
574 prefix = NextPrefix();
575 }
576 _w.WriteStartElement(prefix, name, ns);
577 if (_namespaces != null)
578 {
579 foreach (XmlQualifiedName namespace2 in _namespaces.Namespaces)
580 {
581 string name2 = namespace2.Name;
582 string @namespace = namespace2.Namespace;
583 if (name2.Length == 0 && (@namespace == null || @namespace.Length == 0))
584 {
585 continue;
586 }
587 if (@namespace == null || @namespace.Length == 0)
588 {
589 if (name2.Length > 0)
590 {
592 }
593 WriteAttribute("xmlns", name2, null, @namespace);
594 }
595 else if (_w.LookupPrefix(@namespace) == null)
596 {
597 if (prefix == null && name2.Length == 0)
598 {
599 break;
600 }
601 WriteAttribute("xmlns", name2, null, @namespace);
602 }
603 }
604 }
606 }
virtual bool ContainsKey(object key)
Definition Hashtable.cs:724
virtual void Add(object key, object? value)
Definition Hashtable.cs:676
static string XmlInvalidXmlns
Definition SR.cs:1610
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlCircularReference
Definition SR.cs:1612
Definition SR.cs:7
void WriteNamespaceDeclarations(XmlSerializerNamespaces? xmlns)
HashSet< int > ListUsedPrefixes(XmlSerializerNamespaces nsList, string prefix)
Dictionary< string, XmlQualifiedName >.ValueCollection Namespaces
string? LookupPrefix(string ns)
void WriteStartElement(string localName, string? ns)
Definition XmlWriter.cs:30

References System.Xml.Serialization.XmlSerializationWriter._aliasBase, System.Xml.Serialization.XmlSerializationWriter._namespaces, System.Xml.Serialization.XmlSerializationWriter._objectsInUse, System.Xml.Serialization.XmlSerializationWriter._usedPrefixes, System.Xml.Serialization.XmlSerializationWriter._w, System.Collections.Hashtable.Add(), System.Collections.Hashtable.ContainsKey(), System.Xml.Dictionary, System.SR.Format(), System.Xml.Schema.Length, System.Xml.Serialization.XmlSerializationWriter.ListUsedPrefixes(), System.Xml.XmlWriter.LookupPrefix(), System.Xml.Serialization.XmlSerializerNamespaces.Namespaces, System.Xml.Serialization.XmlSerializationWriter.NextPrefix(), System.prefix, System.Xml.Serialization.XmlSerializerNamespaces.TryLookupNamespace(), System.Xml.Serialization.XmlSerializerNamespaces.TryLookupPrefix(), System.Xml.Serialization.XmlSerializationWriter.WriteNamespaceDeclarations(), System.Xml.XmlWriter.WriteStartElement(), System.SR.XmlCircularReference, and System.SR.XmlInvalidXmlns.