Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlElement.cs
Go to the documentation of this file.
4
5namespace System.Xml;
6
8{
9 private XmlName _name;
10
12
14
16 {
17 get
18 {
19 return _name;
20 }
21 set
22 {
23 _name = value;
24 }
25 }
26
27 public override string Name => _name.Name;
28
29 public override string LocalName => _name.LocalName;
30
31 public override string NamespaceURI => _name.NamespaceURI;
32
33 public override string Prefix
34 {
35 get
36 {
37 return _name.Prefix;
38 }
39 set
40 {
42 }
43 }
44
45 public override XmlNodeType NodeType => XmlNodeType.Element;
46
47 public override XmlNode? ParentNode => parentNode;
48
50
51 internal override bool IsContainer => true;
52
53 public bool IsEmpty
54 {
55 get
56 {
57 return _lastChild == this;
58 }
59 set
60 {
61 if (value)
62 {
63 if (_lastChild != this)
64 {
66 _lastChild = this;
67 }
68 }
69 else if (_lastChild == this)
70 {
71 _lastChild = null;
72 }
73 }
74 }
75
76 internal override XmlLinkedNode? LastNode
77 {
78 get
79 {
80 if (_lastChild != this)
81 {
82 return _lastChild;
83 }
84 return null;
85 }
86 set
87 {
89 }
90 }
91
93 {
94 get
95 {
96 if (_attributes == null)
97 {
99 {
100 if (_attributes == null)
101 {
103 }
104 }
105 }
106 return _attributes;
107 }
108 }
109
110 public virtual bool HasAttributes
111 {
112 get
113 {
114 if (_attributes == null)
115 {
116 return false;
117 }
118 return _attributes.Count > 0;
119 }
120 }
121
122 public override IXmlSchemaInfo SchemaInfo => _name;
123
124 public override string InnerXml
125 {
126 get
127 {
128 return base.InnerXml;
129 }
130 set
131 {
134 xmlLoader.LoadInnerXmlElement(this, value);
135 }
136 }
137
138 public override string InnerText
139 {
140 get
141 {
142 return base.InnerText;
143 }
144 set
145 {
147 if (lastNode != null && lastNode.NodeType == XmlNodeType.Text && lastNode.next == lastNode)
148 {
150 return;
151 }
154 }
155 }
156
157 public override XmlNode? NextSibling
158 {
159 get
160 {
161 if (parentNode != null && parentNode.LastNode != this)
162 {
163 return next;
164 }
165 return null;
166 }
167 }
168
169 internal override XPathNodeType XPNodeType => XPathNodeType.Element;
170
171 internal override string XPLocalName => LocalName;
172
173 internal XmlElement(XmlName name, bool empty, XmlDocument doc)
174 : base(doc)
175 {
176 parentNode = null;
177 if (!doc.IsLoading)
178 {
179 XmlDocument.CheckName(name.Prefix);
180 XmlDocument.CheckName(name.LocalName);
181 }
182 if (name.LocalName.Length == 0)
183 {
185 }
186 _name = name;
187 if (empty)
188 {
189 _lastChild = this;
190 }
191 }
192
193 protected internal XmlElement(string prefix, string localName, string? namespaceURI, XmlDocument doc)
194 : this(doc.AddXmlName(prefix, localName, namespaceURI, null), empty: true, doc)
195 {
196 }
197
227
229 {
230 XmlNodeChangedEventArgs insertEventArgsForLoad = doc.GetInsertEventArgsForLoad(newChild, this);
231 if (insertEventArgsForLoad != null)
232 {
233 doc.BeforeEvent(insertEventArgsForLoad);
234 }
236 if (_lastChild == null || _lastChild == this)
237 {
241 }
242 else
243 {
248 if (lastChild.IsText && xmlLinkedNode.IsText)
249 {
251 }
252 else
253 {
254 xmlLinkedNode.SetParentForLoad(this);
255 }
256 }
257 if (insertEventArgsForLoad != null)
258 {
259 doc.AfterEvent(insertEventArgsForLoad);
260 }
261 return xmlLinkedNode;
262 }
263
264 internal override bool IsValidChildType(XmlNodeType type)
265 {
266 switch (type)
267 {
268 case XmlNodeType.Element:
269 case XmlNodeType.Text:
270 case XmlNodeType.CDATA:
271 case XmlNodeType.EntityReference:
272 case XmlNodeType.ProcessingInstruction:
273 case XmlNodeType.Comment:
274 case XmlNodeType.Whitespace:
275 case XmlNodeType.SignificantWhitespace:
276 return true;
277 default:
278 return false;
279 }
280 }
281
282 public virtual string GetAttribute(string name)
283 {
285 if (attributeNode != null)
286 {
287 return attributeNode.Value;
288 }
289 return string.Empty;
290 }
291
292 public virtual void SetAttribute(string name, string? value)
293 {
295 if (attributeNode == null)
296 {
300 }
301 else
302 {
304 }
305 }
306
307 public virtual void RemoveAttribute(string name)
308 {
309 if (HasAttributes)
310 {
312 }
313 }
314
315 public virtual XmlAttribute? GetAttributeNode(string name)
316 {
317 if (HasAttributes)
318 {
319 return Attributes[name];
320 }
321 return null;
322 }
323
325 {
326 if (newAttr.OwnerElement != null)
327 {
329 }
331 }
332
334 {
335 if (HasAttributes)
336 {
337 return Attributes.Remove(oldAttr);
338 }
339 return null;
340 }
341
342 public virtual XmlNodeList GetElementsByTagName(string name)
343 {
344 return new XmlElementList(this, name);
345 }
346
347 public virtual string GetAttribute(string localName, string? namespaceURI)
348 {
350 if (attributeNode != null)
351 {
352 return attributeNode.Value;
353 }
354 return string.Empty;
355 }
356
357 [return: NotNullIfNotNull("value")]
358 public virtual string? SetAttribute(string localName, string? namespaceURI, string? value)
359 {
361 if (attributeNode == null)
362 {
366 }
367 else
368 {
370 }
371 return value;
372 }
373
374 public virtual void RemoveAttribute(string localName, string? namespaceURI)
375 {
377 }
378
379 public virtual XmlAttribute? GetAttributeNode(string localName, string? namespaceURI)
380 {
381 if (HasAttributes)
382 {
383 return Attributes[localName, namespaceURI];
384 }
385 return null;
386 }
387
388 public virtual XmlAttribute SetAttributeNode(string localName, string? namespaceURI)
389 {
391 if (xmlAttribute == null)
392 {
395 }
396 return xmlAttribute;
397 }
398
399 public virtual XmlAttribute? RemoveAttributeNode(string localName, string? namespaceURI)
400 {
401 if (HasAttributes)
402 {
405 return attributeNode;
406 }
407 return null;
408 }
409
410 public virtual XmlNodeList GetElementsByTagName(string localName, string namespaceURI)
411 {
412 return new XmlElementList(this, localName, namespaceURI);
413 }
414
415 public virtual bool HasAttribute(string name)
416 {
417 return GetAttributeNode(name) != null;
418 }
419
420 public virtual bool HasAttribute(string localName, string? namespaceURI)
421 {
422 return GetAttributeNode(localName, namespaceURI) != null;
423 }
424
425 public override void WriteTo(XmlWriter w)
426 {
427 if (GetType() == typeof(XmlElement))
428 {
429 WriteElementTo(w, this);
430 return;
431 }
433 if (IsEmpty)
434 {
435 w.WriteEndElement();
436 return;
437 }
439 w.WriteFullEndElement();
440 }
441
443 {
445 while (true)
446 {
448 {
449 xmlElement.WriteStartElement(writer);
450 if (xmlElement.IsEmpty)
451 {
452 writer.WriteEndElement();
453 }
454 else
455 {
456 if (xmlElement._lastChild != null)
457 {
459 continue;
460 }
461 writer.WriteFullEndElement();
462 }
463 }
464 else
465 {
467 }
468 while (xmlNode != el && xmlNode == xmlNode.ParentNode.LastChild)
469 {
470 xmlNode = xmlNode.ParentNode;
471 writer.WriteFullEndElement();
472 }
473 if (xmlNode != el)
474 {
475 xmlNode = xmlNode.NextSibling;
476 continue;
477 }
478 break;
479 }
480 }
481
483 {
484 w.WriteStartElement(Prefix, LocalName, NamespaceURI);
485 if (HasAttributes)
486 {
488 for (int i = 0; i < attributes.Count; i++)
489 {
490 XmlAttribute xmlAttribute = attributes[i];
491 xmlAttribute.WriteTo(w);
492 }
493 }
494 }
495
496 public override void WriteContentTo(XmlWriter w)
497 {
499 {
500 xmlNode.WriteTo(w);
501 }
502 }
503
504 public virtual XmlNode? RemoveAttributeAt(int i)
505 {
506 if (HasAttributes)
507 {
508 return _attributes.RemoveAt(i);
509 }
510 return null;
511 }
512
513 public virtual void RemoveAllAttributes()
514 {
515 if (HasAttributes)
516 {
518 }
519 }
520
521 public override void RemoveAll()
522 {
523 base.RemoveAll();
525 }
526
527 internal void RemoveAllChildren()
528 {
529 base.RemoveAll();
530 }
531
532 internal override void SetParent(XmlNode node)
533 {
535 }
536
537 internal override string GetXPAttribute(string localName, string ns)
538 {
540 {
541 return string.Empty;
542 }
544 if (attributeNode != null)
545 {
546 return attributeNode.Value;
547 }
548 return string.Empty;
549 }
550}
static string Xdom_Attr_InUse
Definition SR.cs:1304
static string Xdom_Empty_LocalName
Definition SR.cs:1300
Definition SR.cs:7
override? XmlNode SetNamedItem(XmlNode? node)
XmlAttribute InternalAppendAttribute(XmlAttribute node)
XmlAttribute? Remove(XmlAttribute? node)
override XmlNode CloneNode(bool deep)
virtual XmlText CreateTextNode(string? text)
XmlName AddXmlName(string prefix, string localName, string namespaceURI, IXmlSchemaInfo schemaInfo)
static void CheckName(string name)
XmlAttribute CreateAttribute(string name)
override string NamespaceURI
Definition XmlElement.cs:31
virtual ? XmlAttribute RemoveAttributeNode(string localName, string? namespaceURI)
virtual ? XmlAttribute SetAttributeNode(XmlAttribute newAttr)
override bool IsContainer
Definition XmlElement.cs:51
virtual XmlNodeList GetElementsByTagName(string name)
override string InnerXml
virtual ? XmlAttribute GetAttributeNode(string localName, string? namespaceURI)
XmlAttributeCollection _attributes
Definition XmlElement.cs:11
XmlElement(string prefix, string localName, string? namespaceURI, XmlDocument doc)
virtual void RemoveAllAttributes()
override? XmlNode ParentNode
Definition XmlElement.cs:47
virtual string GetAttribute(string localName, string? namespaceURI)
virtual ? XmlNode RemoveAttributeAt(int i)
virtual bool HasAttribute(string localName, string? namespaceURI)
override string InnerText
override string LocalName
Definition XmlElement.cs:29
override XmlDocument OwnerDocument
Definition XmlElement.cs:49
override XmlNodeType NodeType
Definition XmlElement.cs:45
virtual XmlAttribute SetAttributeNode(string localName, string? namespaceURI)
virtual string GetAttribute(string name)
static void WriteElementTo(XmlWriter writer, XmlElement el)
XmlElement(XmlName name, bool empty, XmlDocument doc)
XmlLinkedNode _lastChild
Definition XmlElement.cs:13
override? XmlLinkedNode LastNode
Definition XmlElement.cs:77
override XmlAttributeCollection Attributes
Definition XmlElement.cs:93
override string Prefix
Definition XmlElement.cs:34
override void SetParent(XmlNode node)
virtual ? XmlAttribute GetAttributeNode(string name)
override void WriteContentTo(XmlWriter w)
virtual ? XmlAttribute RemoveAttributeNode(XmlAttribute oldAttr)
override bool IsValidChildType(XmlNodeType type)
override string XPLocalName
override XmlNode CloneNode(bool deep)
override void WriteTo(XmlWriter w)
void WriteStartElement(XmlWriter w)
virtual void RemoveAttribute(string name)
override XmlNode AppendChildForLoad(XmlNode newChild, XmlDocument doc)
virtual void SetAttribute(string name, string? value)
override XPathNodeType XPNodeType
virtual bool HasAttribute(string name)
virtual void RemoveAttribute(string localName, string? namespaceURI)
override void RemoveAll()
virtual bool HasAttributes
override string GetXPAttribute(string localName, string ns)
virtual ? string SetAttribute(string localName, string? namespaceURI, string? value)
virtual XmlNodeList GetElementsByTagName(string localName, string namespaceURI)
override? XmlNode NextSibling
override string Name
Definition XmlElement.cs:27
XmlLinkedNode(XmlDocument doc)
string NamespaceURI
Definition XmlName.cs:23
XmlDocument OwnerDocument
Definition XmlName.cs:29
virtual ? XmlNode RemoveNamedItem(string name)
void WriteTo(XmlWriter w)
XmlNode parentNode
Definition XmlNode.cs:57
virtual void CopyChildren(XmlDocument doc, XmlNode container, bool deep)
Definition XmlNode.cs:869
static void NestTextNodes(XmlNode prevNode, XmlNode nextNode)
Definition XmlNode.cs:1274
virtual ? XmlNode NextSibling
Definition XmlNode.cs:104
virtual ? XmlLinkedNode LastNode
Definition XmlNode.cs:127
virtual ? XmlNode FirstChild
Definition XmlNode.cs:120
virtual ? XmlAttributeCollection Attributes
Definition XmlNode.cs:106
virtual void SetParentForLoad(XmlNode node)
Definition XmlNode.cs:1207