Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XNodeReader.cs
Go to the documentation of this file.
1namespace System.Xml.Linq;
2
3internal sealed class XNodeReader : XmlReader, IXmlLineInfo
4{
5 private static readonly char[] s_WhitespaceChars = new char[4] { ' ', '\t', '\n', '\r' };
6
7 private object _source;
8
9 private object _parent;
10
12
13 private XNode _root;
14
15 private readonly XmlNameTable _nameTable;
16
17 private readonly bool _omitDuplicateNamespaces;
18
19 public override int AttributeCount
20 {
21 get
22 {
23 if (!IsInteractive)
24 {
25 return 0;
26 }
27 int num = 0;
29 if (elementInAttributeScope != null)
30 {
32 if (xAttribute != null)
33 {
34 do
35 {
38 {
39 num++;
40 }
41 }
42 while (xAttribute != elementInAttributeScope.lastAttr);
43 }
44 }
45 return num;
46 }
47 }
48
49 public override string BaseURI
50 {
51 get
52 {
54 {
55 return xObject.BaseUri;
56 }
58 {
59 return xObject2.BaseUri;
60 }
61 return string.Empty;
62 }
63 }
64
65 public override int Depth
66 {
67 get
68 {
69 if (!IsInteractive)
70 {
71 return 0;
72 }
73 if (_source is XObject o)
74 {
75 return GetDepth(o);
76 }
77 if (_parent is XObject o2)
78 {
79 return GetDepth(o2) + 1;
80 }
81 return 0;
82 }
83 }
84
85 public override bool EOF => _state == ReadState.EndOfFile;
86
87 public override bool HasAttributes
88 {
89 get
90 {
91 if (!IsInteractive)
92 {
93 return false;
94 }
96 if (elementInAttributeScope != null && elementInAttributeScope.lastAttr != null)
97 {
99 {
101 }
102 return true;
103 }
104 return false;
105 }
106 }
107
108 public override bool HasValue
109 {
110 get
111 {
112 if (!IsInteractive)
113 {
114 return false;
115 }
117 {
118 switch (xObject.NodeType)
119 {
120 case XmlNodeType.Attribute:
121 case XmlNodeType.Text:
122 case XmlNodeType.CDATA:
123 case XmlNodeType.ProcessingInstruction:
124 case XmlNodeType.Comment:
125 case XmlNodeType.DocumentType:
126 return true;
127 default:
128 return false;
129 }
130 }
131 return true;
132 }
133 }
134
135 public override bool IsEmptyElement
136 {
137 get
138 {
139 if (!IsInteractive)
140 {
141 return false;
142 }
144 {
145 return xElement.IsEmpty;
146 }
147 return false;
148 }
149 }
150
151 public override string LocalName => _nameTable.Add(GetLocalName());
152
153 public override string Name
154 {
155 get
156 {
157 string prefix = GetPrefix();
158 if (prefix.Length == 0)
159 {
160 return _nameTable.Add(GetLocalName());
161 }
162 return _nameTable.Add(prefix + ":" + GetLocalName());
163 }
164 }
165
166 public override string NamespaceURI => _nameTable.Add(GetNamespaceURI());
167
169
170 public override XmlNodeType NodeType
171 {
172 get
173 {
174 if (!IsInteractive)
175 {
176 return XmlNodeType.None;
177 }
179 {
180 if (IsEndElement)
181 {
182 return XmlNodeType.EndElement;
183 }
184 XmlNodeType nodeType = xObject.NodeType;
185 if (nodeType != XmlNodeType.Text)
186 {
187 return nodeType;
188 }
189 if (xObject.parent != null && xObject.parent.parent == null && xObject.parent is XDocument)
190 {
191 return XmlNodeType.Whitespace;
192 }
193 return XmlNodeType.Text;
194 }
195 if (_parent is XDocument)
196 {
197 return XmlNodeType.Whitespace;
198 }
199 return XmlNodeType.Text;
200 }
201 }
202
203 public override string Prefix => _nameTable.Add(GetPrefix());
204
205 public override ReadState ReadState => _state;
206
208 {
209 get
210 {
213 return xmlReaderSettings;
214 }
215 }
216
217 public override string Value
218 {
219 get
220 {
221 if (!IsInteractive)
222 {
223 return string.Empty;
224 }
226 {
227 switch (xObject.NodeType)
228 {
229 case XmlNodeType.Attribute:
230 return ((XAttribute)xObject).Value;
231 case XmlNodeType.Text:
232 case XmlNodeType.CDATA:
233 return ((XText)xObject).Value;
234 case XmlNodeType.Comment:
235 return ((XComment)xObject).Value;
236 case XmlNodeType.ProcessingInstruction:
237 return ((XProcessingInstruction)xObject).Data;
238 case XmlNodeType.DocumentType:
239 return ((XDocumentType)xObject).InternalSubset ?? string.Empty;
240 default:
241 return string.Empty;
242 }
243 }
244 return (string)_source;
245 }
246 }
247
248 public override string XmlLang
249 {
250 get
251 {
252 if (!IsInteractive)
253 {
254 return string.Empty;
255 }
257 if (xElement != null)
258 {
259 XName name = XNamespace.Xml.GetName("lang");
260 do
261 {
262 XAttribute xAttribute = xElement.Attribute(name);
263 if (xAttribute != null)
264 {
265 return xAttribute.Value;
266 }
268 }
269 while (xElement != null);
270 }
271 return string.Empty;
272 }
273 }
274
275 public override XmlSpace XmlSpace
276 {
277 get
278 {
279 if (!IsInteractive)
280 {
281 return XmlSpace.None;
282 }
284 if (xElement != null)
285 {
286 XName name = XNamespace.Xml.GetName("space");
287 do
288 {
289 XAttribute xAttribute = xElement.Attribute(name);
290 if (xAttribute != null)
291 {
292 string text = xAttribute.Value.Trim(s_WhitespaceChars);
293 if (text == "preserve")
294 {
295 return XmlSpace.Preserve;
296 }
297 if (text == "default")
298 {
299 return XmlSpace.Default;
300 }
301 }
303 }
304 while (xElement != null);
305 }
306 return XmlSpace.None;
307 }
308 }
309
311 {
312 get
313 {
314 if (IsEndElement)
315 {
317 {
320 {
322 }
323 }
324 }
326 {
327 return xmlLineInfo.LineNumber;
328 }
329 return 0;
330 }
331 }
332
334 {
335 get
336 {
337 if (IsEndElement)
338 {
340 {
343 {
345 }
346 }
347 }
349 {
350 return xmlLineInfo.LinePosition;
351 }
352 return 0;
353 }
354 }
355
356 private bool IsEndElement
357 {
358 get
359 {
360 return _parent == _source;
361 }
362 set
363 {
364 _parent = (value ? _source : null);
365 }
366 }
367
368 private bool IsInteractive => _state == ReadState.Interactive;
369
371 {
372 _source = node;
373 _root = node;
374 _nameTable = ((nameTable != null) ? nameTable : CreateNameTable());
375 _omitDuplicateNamespaces = (((options & ReaderOptions.OmitDuplicateNamespaces) != 0) ? true : false);
376 }
377
382
383 private static int GetDepth(XObject o)
384 {
385 int num = 0;
386 while (o.parent != null)
387 {
388 num++;
389 o = o.parent;
390 }
391 if (o is XDocument)
392 {
393 num--;
394 }
395 return num;
396 }
397
398 private string GetLocalName()
399 {
400 if (!IsInteractive)
401 {
402 return string.Empty;
403 }
405 {
406 return xElement.Name.LocalName;
407 }
409 {
410 return xAttribute.Name.LocalName;
411 }
413 {
414 return xProcessingInstruction.Target;
415 }
417 {
418 return xDocumentType.Name;
419 }
420 return string.Empty;
421 }
422
423 private string GetNamespaceURI()
424 {
425 if (!IsInteractive)
426 {
427 return string.Empty;
428 }
430 {
431 return xElement.Name.NamespaceName;
432 }
434 {
435 string namespaceName = xAttribute.Name.NamespaceName;
436 if (namespaceName.Length == 0 && xAttribute.Name.LocalName == "xmlns")
437 {
438 return "http://www.w3.org/2000/xmlns/";
439 }
440 return namespaceName;
441 }
442 return string.Empty;
443 }
444
445 private string GetPrefix()
446 {
447 if (!IsInteractive)
448 {
449 return string.Empty;
450 }
452 {
453 string prefixOfNamespace = xElement.GetPrefixOfNamespace(xElement.Name.Namespace);
454 if (prefixOfNamespace != null)
455 {
456 return prefixOfNamespace;
457 }
458 return string.Empty;
459 }
461 {
462 string prefixOfNamespace2 = xAttribute.GetPrefixOfNamespace(xAttribute.Name.Namespace);
463 if (prefixOfNamespace2 != null)
464 {
465 return prefixOfNamespace2;
466 }
467 }
468 return string.Empty;
469 }
470
471 protected override void Dispose(bool disposing)
472 {
473 if (disposing && ReadState != ReadState.Closed)
474 {
475 Close();
476 }
477 }
478
479 public override void Close()
480 {
481 _source = null;
482 _parent = null;
483 _root = null;
484 _state = ReadState.Closed;
485 }
486
487 public override string GetAttribute(string name)
488 {
489 if (!IsInteractive)
490 {
491 return null;
492 }
494 if (elementInAttributeScope != null)
495 {
498 if (xAttribute != null)
499 {
500 do
501 {
503 if (xAttribute.Name.LocalName == localName && xAttribute.Name.NamespaceName == namespaceName)
504 {
506 {
507 return null;
508 }
509 return xAttribute.Value;
510 }
511 }
512 while (xAttribute != elementInAttributeScope.lastAttr);
513 }
514 return null;
515 }
517 {
518 if (name == "PUBLIC")
519 {
520 return xDocumentType.PublicId;
521 }
522 if (name == "SYSTEM")
523 {
524 return xDocumentType.SystemId;
525 }
526 }
527 return null;
528 }
529
530 public override string GetAttribute(string localName, string namespaceName)
531 {
532 if (!IsInteractive)
533 {
534 return null;
535 }
537 if (elementInAttributeScope != null)
538 {
539 if (localName == "xmlns")
540 {
541 if (namespaceName != null && namespaceName.Length == 0)
542 {
543 return null;
544 }
545 if (namespaceName == "http://www.w3.org/2000/xmlns/")
546 {
547 namespaceName = string.Empty;
548 }
549 }
551 if (xAttribute != null)
552 {
553 do
554 {
556 if (xAttribute.Name.LocalName == localName && xAttribute.Name.NamespaceName == namespaceName)
557 {
559 {
560 return null;
561 }
562 return xAttribute.Value;
563 }
564 }
565 while (xAttribute != elementInAttributeScope.lastAttr);
566 }
567 }
568 return null;
569 }
570
571 public override string GetAttribute(int index)
572 {
573 if (!IsInteractive)
574 {
576 }
577 if (index < 0)
578 {
579 throw new ArgumentOutOfRangeException("index");
580 }
582 if (elementInAttributeScope != null)
583 {
585 if (xAttribute != null)
586 {
587 do
588 {
591 {
592 return xAttribute.Value;
593 }
594 }
595 while (xAttribute != elementInAttributeScope.lastAttr);
596 }
597 }
598 throw new ArgumentOutOfRangeException("index");
599 }
600
601 public override string LookupNamespace(string prefix)
602 {
603 if (!IsInteractive)
604 {
605 return null;
606 }
607 if (prefix == null)
608 {
609 return null;
610 }
612 if (elementInScope != null)
613 {
614 XNamespace xNamespace = ((prefix.Length == 0) ? elementInScope.GetDefaultNamespace() : elementInScope.GetNamespaceOfPrefix(prefix));
615 if (xNamespace != null)
616 {
617 return _nameTable.Add(xNamespace.NamespaceName);
618 }
619 }
620 return null;
621 }
622
623 public override bool MoveToAttribute(string name)
624 {
625 if (!IsInteractive)
626 {
627 return false;
628 }
630 if (elementInAttributeScope != null)
631 {
634 if (xAttribute != null)
635 {
636 do
637 {
639 if (xAttribute.Name.LocalName == localName && xAttribute.Name.NamespaceName == namespaceName)
640 {
642 {
643 return false;
644 }
646 _parent = null;
647 return true;
648 }
649 }
650 while (xAttribute != elementInAttributeScope.lastAttr);
651 }
652 }
653 return false;
654 }
655
656 public override bool MoveToAttribute(string localName, string namespaceName)
657 {
658 if (!IsInteractive)
659 {
660 return false;
661 }
663 if (elementInAttributeScope != null)
664 {
665 if (localName == "xmlns")
666 {
667 if (namespaceName != null && namespaceName.Length == 0)
668 {
669 return false;
670 }
671 if (namespaceName == "http://www.w3.org/2000/xmlns/")
672 {
673 namespaceName = string.Empty;
674 }
675 }
677 if (xAttribute != null)
678 {
679 do
680 {
682 if (xAttribute.Name.LocalName == localName && xAttribute.Name.NamespaceName == namespaceName)
683 {
685 {
686 return false;
687 }
689 _parent = null;
690 return true;
691 }
692 }
693 while (xAttribute != elementInAttributeScope.lastAttr);
694 }
695 }
696 return false;
697 }
698
699 public override void MoveToAttribute(int index)
700 {
701 if (!IsInteractive)
702 {
703 return;
704 }
705 if (index < 0)
706 {
707 throw new ArgumentOutOfRangeException("index");
708 }
710 if (elementInAttributeScope != null)
711 {
713 if (xAttribute != null)
714 {
715 do
716 {
719 {
721 _parent = null;
722 return;
723 }
724 }
725 while (xAttribute != elementInAttributeScope.lastAttr);
726 }
727 }
728 throw new ArgumentOutOfRangeException("index");
729 }
730
731 public override bool MoveToElement()
732 {
733 if (!IsInteractive)
734 {
735 return false;
736 }
738 if (xAttribute == null)
739 {
741 }
742 if (xAttribute != null && xAttribute.parent != null)
743 {
744 _source = xAttribute.parent;
745 _parent = null;
746 return true;
747 }
748 return false;
749 }
750
751 public override bool MoveToFirstAttribute()
752 {
753 if (!IsInteractive)
754 {
755 return false;
756 }
758 if (elementInAttributeScope != null && elementInAttributeScope.lastAttr != null)
759 {
761 {
764 {
765 return false;
766 }
768 }
769 else
770 {
771 _source = elementInAttributeScope.lastAttr.next;
772 }
773 return true;
774 }
775 return false;
776 }
777
778 public override bool MoveToNextAttribute()
779 {
780 if (!IsInteractive)
781 {
782 return false;
783 }
785 {
786 if (IsEndElement)
787 {
788 return false;
789 }
790 if (xElement.lastAttr != null)
791 {
793 {
796 {
797 return false;
798 }
800 }
801 else
802 {
803 _source = xElement.lastAttr.next;
804 }
805 return true;
806 }
807 return false;
808 }
810 if (xAttribute == null)
811 {
813 }
814 if (xAttribute != null && xAttribute.parent != null && ((XElement)xAttribute.parent).lastAttr != xAttribute)
815 {
817 {
820 {
821 return false;
822 }
824 }
825 else
826 {
827 _source = xAttribute.next;
828 }
829 _parent = null;
830 return true;
831 }
832 return false;
833 }
834
835 public override bool Read()
836 {
837 switch (_state)
838 {
839 case ReadState.Initial:
840 _state = ReadState.Interactive;
841 if (_source is XDocument d)
842 {
843 return ReadIntoDocument(d);
844 }
845 return true;
846 case ReadState.Interactive:
847 return Read(skipContent: false);
848 default:
849 return false;
850 }
851 }
852
853 public override bool ReadAttributeValue()
854 {
855 if (!IsInteractive)
856 {
857 return false;
858 }
860 {
861 return ReadIntoAttribute(a);
862 }
863 return false;
864 }
865
866 public override bool ReadToDescendant(string localName, string namespaceName)
867 {
868 if (!IsInteractive)
869 {
870 return false;
871 }
873 if (_source is XElement { IsEmpty: false } xElement)
874 {
875 if (IsEndElement)
876 {
877 return false;
878 }
879 foreach (XElement item in xElement.Descendants())
880 {
881 if (item.Name.LocalName == localName && item.Name.NamespaceName == namespaceName)
882 {
883 _source = item;
884 return true;
885 }
886 }
887 IsEndElement = true;
888 }
889 return false;
890 }
891
892 public override bool ReadToFollowing(string localName, string namespaceName)
893 {
894 while (Read())
895 {
896 if (_source is XElement xElement && !IsEndElement && xElement.Name.LocalName == localName && xElement.Name.NamespaceName == namespaceName)
897 {
898 return true;
899 }
900 }
901 return false;
902 }
903
904 public override bool ReadToNextSibling(string localName, string namespaceName)
905 {
906 if (!IsInteractive)
907 {
908 return false;
909 }
911 if (_source != _root)
912 {
913 if (_source is XNode xNode)
914 {
915 foreach (XElement item in xNode.ElementsAfterSelf())
916 {
917 if (item.Name.LocalName == localName && item.Name.NamespaceName == namespaceName)
918 {
919 _source = item;
920 IsEndElement = false;
921 return true;
922 }
923 }
924 if (xNode.parent is XElement)
925 {
926 _source = xNode.parent;
927 IsEndElement = true;
928 return false;
929 }
930 }
931 else if (_parent is XElement)
932 {
934 _parent = null;
935 IsEndElement = true;
936 return false;
937 }
938 }
939 return ReadToEnd();
940 }
941
942 public override void ResolveEntity()
943 {
944 }
945
946 public override void Skip()
947 {
948 if (IsInteractive)
949 {
950 Read(skipContent: true);
951 }
952 }
953
955 {
956 if (IsEndElement)
957 {
959 {
960 return xElement.Annotation<LineInfoEndElementAnnotation>() != null;
961 }
962 }
964 {
965 return xmlLineInfo.HasLineInfo();
966 }
967 return false;
968 }
969
971 {
973 xmlNameTable.Add(string.Empty);
974 xmlNameTable.Add("http://www.w3.org/2000/xmlns/");
975 xmlNameTable.Add("http://www.w3.org/XML/1998/namespace");
976 return xmlNameTable;
977 }
978
980 {
981 if (_source is XElement result)
982 {
983 if (IsEndElement)
984 {
985 return null;
986 }
987 return result;
988 }
990 {
991 return (XElement)xAttribute.parent;
992 }
994 {
996 }
997 return null;
998 }
999
1001 {
1002 if (_source is XElement result)
1003 {
1004 return result;
1005 }
1006 if (_source is XNode xNode)
1007 {
1008 return xNode.parent as XElement;
1009 }
1011 {
1012 return (XElement)xAttribute.parent;
1013 }
1015 {
1016 return result2;
1017 }
1019 {
1020 return (XElement)xAttribute2.parent;
1021 }
1022 return null;
1023 }
1024
1025 private static void GetNameInAttributeScope(string qualifiedName, XElement e, out string localName, out string namespaceName)
1026 {
1027 if (!string.IsNullOrEmpty(qualifiedName))
1028 {
1029 int num = qualifiedName.IndexOf(':');
1030 if (num != 0 && num != qualifiedName.Length - 1)
1031 {
1032 if (num == -1)
1033 {
1034 localName = qualifiedName;
1035 namespaceName = string.Empty;
1036 return;
1037 }
1039 if (namespaceOfPrefix != null)
1040 {
1041 localName = qualifiedName.Substring(num + 1, qualifiedName.Length - num - 1);
1043 return;
1044 }
1045 }
1046 }
1047 localName = null;
1048 namespaceName = null;
1049 }
1050
1051 private bool Read(bool skipContent)
1052 {
1054 {
1055 if (xElement.IsEmpty || IsEndElement || skipContent)
1056 {
1057 return ReadOverNode(xElement);
1058 }
1059 return ReadIntoElement(xElement);
1060 }
1061 if (_source is XNode n)
1062 {
1063 return ReadOverNode(n);
1064 }
1065 if (_source is XAttribute a)
1066 {
1068 }
1069 return ReadOverText(skipContent);
1070 }
1071
1073 {
1074 if (d.content is XNode xNode)
1075 {
1076 _source = xNode.next;
1077 return true;
1078 }
1079 if (d.content is string { Length: >0 } text)
1080 {
1081 _source = text;
1082 _parent = d;
1083 return true;
1084 }
1085 return ReadToEnd();
1086 }
1087
1089 {
1090 if (e.content is XNode xNode)
1091 {
1092 _source = xNode.next;
1093 return true;
1094 }
1095 if (e.content is string text)
1096 {
1097 if (text.Length > 0)
1098 {
1099 _source = text;
1100 _parent = e;
1101 }
1102 else
1103 {
1104 _source = e;
1105 IsEndElement = true;
1106 }
1107 return true;
1108 }
1109 return ReadToEnd();
1110 }
1111
1113 {
1114 _source = a.value;
1115 _parent = a;
1116 return true;
1117 }
1118
1120 {
1122 if (xElement != null)
1123 {
1124 if (xElement.IsEmpty || skipContent)
1125 {
1126 return ReadOverNode(xElement);
1127 }
1128 return ReadIntoElement(xElement);
1129 }
1130 return ReadToEnd();
1131 }
1132
1133 private bool ReadOverNode(XNode n)
1134 {
1135 if (n == _root)
1136 {
1137 return ReadToEnd();
1138 }
1139 XNode next = n.next;
1140 if (next == null || next == n || n == n.parent.content)
1141 {
1142 if (n.parent == null || (n.parent.parent == null && n.parent is XDocument))
1143 {
1144 return ReadToEnd();
1145 }
1146 _source = n.parent;
1147 IsEndElement = true;
1148 }
1149 else
1150 {
1151 _source = next;
1152 IsEndElement = false;
1153 }
1154 return true;
1155 }
1156
1157 private bool ReadOverText(bool skipContent)
1158 {
1159 if (_parent is XElement)
1160 {
1161 _source = _parent;
1162 _parent = null;
1163 IsEndElement = true;
1164 return true;
1165 }
1166 if (_parent is XAttribute a)
1167 {
1168 _parent = null;
1170 }
1171 return ReadToEnd();
1172 }
1173
1174 private bool ReadToEnd()
1175 {
1176 _state = ReadState.EndOfFile;
1177 return false;
1178 }
1179
1181 {
1182 if (!candidateAttribute.IsNamespaceDeclaration)
1183 {
1184 return false;
1185 }
1187 }
1188
1190 {
1191 if (candidateAttribute.Name.LocalName == "xml")
1192 {
1193 return true;
1194 }
1196 if (xElement == _root || xElement == null)
1197 {
1198 return false;
1199 }
1201 {
1202 XAttribute xAttribute = xElement.lastAttr;
1203 if (xAttribute != null)
1204 {
1205 do
1206 {
1207 if (xAttribute.name == candidateAttribute.name)
1208 {
1209 if (xAttribute.Value == candidateAttribute.Value)
1210 {
1211 return true;
1212 }
1213 return false;
1214 }
1216 }
1217 while (xAttribute != xElement.lastAttr);
1218 }
1219 if (xElement == _root)
1220 {
1221 return false;
1222 }
1223 }
1224 return false;
1225 }
1226
1228 {
1230 {
1231 return candidate;
1232 }
1234 {
1235 do
1236 {
1239 {
1240 return candidate;
1241 }
1242 }
1243 while (candidate != xElement.lastAttr);
1244 }
1245 return null;
1246 }
1247}
static string InvalidOperation_ExpectedInteractive
Definition SR.cs:46
Definition SR.cs:7
IEnumerable< XElement > Descendants()
XNamespace? GetNamespaceOfPrefix(string prefix)
Definition XElement.cs:279
static XNamespace Xml
Definition XNamespace.cs:26
override XmlReaderSettings Settings
bool IsDuplicateNamespaceAttribute(XAttribute candidateAttribute)
bool ReadOverAttribute(XAttribute a, bool skipContent)
override bool MoveToNextAttribute()
static XmlNameTable CreateNameTable()
XNodeReader(XNode node, XmlNameTable nameTable)
bool Read(bool skipContent)
XElement GetElementInAttributeScope()
override bool MoveToFirstAttribute()
static readonly char[] s_WhitespaceChars
Definition XNodeReader.cs:5
XAttribute GetFirstNonDuplicateNamespaceAttribute(XAttribute candidate)
bool IsDuplicateNamespaceAttributeInner(XAttribute candidateAttribute)
XNodeReader(XNode node, XmlNameTable nameTable, ReaderOptions options)
override bool MoveToAttribute(string localName, string namespaceName)
override string NamespaceURI
override bool ReadToDescendant(string localName, string namespaceName)
static void GetNameInAttributeScope(string qualifiedName, XElement e, out string localName, out string namespaceName)
bool ReadIntoAttribute(XAttribute a)
override bool ReadToNextSibling(string localName, string namespaceName)
override bool MoveToElement()
readonly XmlNameTable _nameTable
bool ReadIntoDocument(XDocument d)
override XmlNameTable NameTable
override bool MoveToAttribute(string name)
override bool ReadToFollowing(string localName, string namespaceName)
override void Dispose(bool disposing)
override XmlNodeType NodeType
override void MoveToAttribute(int index)
override string GetAttribute(int index)
readonly bool _omitDuplicateNamespaces
override string LookupNamespace(string prefix)
static int GetDepth(XObject o)
override void ResolveEntity()
override bool ReadAttributeValue()
bool ReadOverText(bool skipContent)
bool ReadIntoElement(XElement e)
override string GetAttribute(string localName, string namespaceName)
override string GetAttribute(string name)
IEnumerable< XElement > ElementsAfterSelf()
Definition XNode.cs:250
XContainer parent
Definition XObject.cs:7
string Add(char[] array, int offset, int length)