Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlNodeReaderNavigator.cs
Go to the documentation of this file.
2using System.Text;
4
5namespace System.Xml;
6
7internal sealed class XmlNodeReaderNavigator
8{
9 internal struct VirtualAttribute
10 {
11 internal string name;
12
13 internal string value;
14
15 internal VirtualAttribute(string name, string value)
16 {
19 }
20 }
21
23
25
27
28 private int _attrIndex;
29
30 private int _logAttrIndex;
31
32 private readonly XmlNameTable _nameTable;
33
34 private readonly XmlDocument _doc;
35
36 private int _nAttrInd;
37
39
40 private int _nDocTypeAttrCount;
41
42 private int _nLogLevel;
43
44 private int _nLogAttrInd;
45
46 private bool _bLogOnAttrVal;
47
48 private readonly bool _bCreatedOnAttribute;
49
51 {
52 new VirtualAttribute(null, null),
53 new VirtualAttribute(null, null),
54 new VirtualAttribute(null, null)
55 };
56
58 {
59 new VirtualAttribute(null, null),
60 new VirtualAttribute(null, null)
61 };
62
63 private bool _bOnAttrVal;
64
66 {
67 get
68 {
69 XmlNodeType nodeType = _curNode.NodeType;
70 if (_nAttrInd != -1)
71 {
72 if (_bOnAttrVal)
73 {
74 return XmlNodeType.Text;
75 }
76 return XmlNodeType.Attribute;
77 }
78 return nodeType;
79 }
80 }
81
83
84 public string Name
85 {
86 get
87 {
88 if (_nAttrInd != -1)
89 {
90 if (_bOnAttrVal)
91 {
92 return string.Empty;
93 }
94 if (_curNode.NodeType == XmlNodeType.XmlDeclaration)
95 {
97 }
99 }
101 {
102 return string.Empty;
103 }
104 return _curNode.Name;
105 }
106 }
107
108 public string LocalName
109 {
110 get
111 {
112 if (_nAttrInd != -1)
113 {
114 return Name;
115 }
117 {
118 return string.Empty;
119 }
120 return _curNode.LocalName;
121 }
122 }
123
125
126 public string Prefix => _curNode.Prefix;
127
128 public bool HasValue
129 {
130 get
131 {
132 if (_nAttrInd != -1)
133 {
134 return true;
135 }
136 if (_curNode.Value != null || _curNode.NodeType == XmlNodeType.DocumentType)
137 {
138 return true;
139 }
140 return false;
141 }
142 }
143
144 public string Value
145 {
146 get
147 {
148 string text = null;
149 XmlNodeType nodeType = _curNode.NodeType;
150 if (_nAttrInd != -1)
151 {
152 if (_curNode.NodeType == XmlNodeType.XmlDeclaration)
153 {
155 }
157 }
158 switch (nodeType)
159 {
160 case XmlNodeType.DocumentType:
161 text = ((XmlDocumentType)_curNode).InternalSubset;
162 break;
163 case XmlNodeType.XmlDeclaration:
164 {
166 if (_nDeclarationAttrCount == -1)
167 {
168 InitDecAttr();
169 }
170 for (int i = 0; i < _nDeclarationAttrCount; i++)
171 {
172 stringBuilder.Append(decNodeAttributes[i].name + "=\"" + decNodeAttributes[i].value + "\"");
173 if (i != _nDeclarationAttrCount - 1)
174 {
175 stringBuilder.Append(' ');
176 }
177 }
178 text = stringBuilder.ToString();
179 break;
180 }
181 default:
183 break;
184 }
185 if (text != null)
186 {
187 return text;
188 }
189 return string.Empty;
190 }
191 }
192
193 public string BaseURI => _curNode.BaseURI;
194
196
197 public string XmlLang => _curNode.XmlLang;
198
199 public bool IsEmptyElement
200 {
201 get
202 {
203 if (_curNode.NodeType == XmlNodeType.Element)
204 {
205 return ((XmlElement)_curNode).IsEmpty;
206 }
207 return false;
208 }
209 }
210
211 public bool IsDefault
212 {
213 get
214 {
215 if (_curNode.NodeType == XmlNodeType.Attribute)
216 {
217 return !((XmlAttribute)_curNode).Specified;
218 }
219 return false;
220 }
221 }
222
224
226
227 public int AttributeCount
228 {
229 get
230 {
232 {
233 return 0;
234 }
235 XmlNodeType nodeType = _curNode.NodeType;
236 switch (nodeType)
237 {
238 case XmlNodeType.Element:
239 return ((XmlElement)_curNode).Attributes.Count;
240 default:
241 if (!_bOnAttrVal || nodeType == XmlNodeType.XmlDeclaration || nodeType == XmlNodeType.DocumentType)
242 {
243 break;
244 }
245 goto case XmlNodeType.Attribute;
246 case XmlNodeType.Attribute:
248 }
249 switch (nodeType)
250 {
251 case XmlNodeType.XmlDeclaration:
252 if (_nDeclarationAttrCount != -1)
253 {
255 }
256 InitDecAttr();
258 case XmlNodeType.DocumentType:
259 if (_nDocTypeAttrCount != -1)
260 {
261 return _nDocTypeAttrCount;
262 }
264 return _nDocTypeAttrCount;
265 default:
266 return 0;
267 }
268 }
269 }
270
271 private bool IsOnDeclOrDocType
272 {
273 get
274 {
275 XmlNodeType nodeType = _curNode.NodeType;
276 if (nodeType != XmlNodeType.XmlDeclaration)
277 {
278 return nodeType == XmlNodeType.DocumentType;
279 }
280 return true;
281 }
282 }
283
285
287 {
288 _curNode = node;
289 _logNode = node;
290 XmlNodeType nodeType = _curNode.NodeType;
291 if (nodeType == XmlNodeType.Attribute)
292 {
293 _elemNode = null;
294 _attrIndex = -1;
296 }
297 else
298 {
299 _elemNode = node;
300 _attrIndex = -1;
301 _bCreatedOnAttribute = false;
302 }
303 if (nodeType == XmlNodeType.Document)
304 {
306 }
307 else
308 {
309 _doc = node.OwnerDocument;
310 }
312 _nAttrInd = -1;
315 _bOnAttrVal = false;
316 _bLogOnAttrVal = false;
317 }
318
320 {
321 switch (nt)
322 {
323 case XmlNodeType.None:
324 case XmlNodeType.Text:
325 case XmlNodeType.CDATA:
326 case XmlNodeType.Comment:
327 case XmlNodeType.Document:
328 case XmlNodeType.DocumentFragment:
329 case XmlNodeType.Whitespace:
330 case XmlNodeType.SignificantWhitespace:
331 case XmlNodeType.EndElement:
332 case XmlNodeType.EndEntity:
333 return true;
334 case XmlNodeType.Element:
335 case XmlNodeType.Attribute:
336 case XmlNodeType.EntityReference:
337 case XmlNodeType.Entity:
338 case XmlNodeType.ProcessingInstruction:
339 case XmlNodeType.DocumentType:
340 case XmlNodeType.Notation:
341 case XmlNodeType.XmlDeclaration:
342 return false;
343 default:
344 return true;
345 }
346 }
347
349 {
351 {
352 throw new ArgumentOutOfRangeException("attributeIndex");
353 }
354 }
355
356 private void InitDecAttr()
357 {
358 int num = 0;
359 string version = _doc.Version;
360 if (version != null && version.Length != 0)
361 {
362 decNodeAttributes[num].name = "version";
363 decNodeAttributes[num].value = version;
364 num++;
365 }
366 version = _doc.Encoding;
367 if (version != null && version.Length != 0)
368 {
369 decNodeAttributes[num].name = "encoding";
370 decNodeAttributes[num].value = version;
371 num++;
372 }
373 version = _doc.Standalone;
374 if (version != null && version.Length != 0)
375 {
376 decNodeAttributes[num].name = "standalone";
377 decNodeAttributes[num].value = version;
378 num++;
379 }
381 }
382
383 public string GetDeclarationAttr(XmlDeclaration decl, string name)
384 {
385 return name switch
386 {
387 "version" => decl.Version,
388 "encoding" => decl.Encoding,
389 "standalone" => decl.Standalone,
390 _ => null,
391 };
392 }
393
394 public string GetDeclarationAttr(int i)
395 {
396 if (_nDeclarationAttrCount == -1)
397 {
398 InitDecAttr();
399 }
400 return decNodeAttributes[i].value;
401 }
402
403 public int GetDecAttrInd(string name)
404 {
405 if (_nDeclarationAttrCount == -1)
406 {
407 InitDecAttr();
408 }
409 for (int i = 0; i < _nDeclarationAttrCount; i++)
410 {
411 if (decNodeAttributes[i].name == name)
412 {
413 return i;
414 }
415 }
416 return -1;
417 }
418
419 private void InitDocTypeAttr()
420 {
421 int num = 0;
423 if (documentType == null)
424 {
426 return;
427 }
428 string publicId = documentType.PublicId;
429 if (publicId != null)
430 {
431 docTypeNodeAttributes[num].name = "PUBLIC";
432 docTypeNodeAttributes[num].value = publicId;
433 num++;
434 }
435 publicId = documentType.SystemId;
436 if (publicId != null)
437 {
438 docTypeNodeAttributes[num].name = "SYSTEM";
439 docTypeNodeAttributes[num].value = publicId;
440 num++;
441 }
442 _nDocTypeAttrCount = num;
443 }
444
445 public string GetDocumentTypeAttr(XmlDocumentType docType, string name)
446 {
447 if (name == "PUBLIC")
448 {
449 return docType.PublicId;
450 }
451 if (name == "SYSTEM")
452 {
453 return docType.SystemId;
454 }
455 return null;
456 }
457
458 public string GetDocumentTypeAttr(int i)
459 {
460 if (_nDocTypeAttrCount == -1)
461 {
463 }
465 }
466
467 public int GetDocTypeAttrInd(string name)
468 {
469 if (_nDocTypeAttrCount == -1)
470 {
472 }
473 for (int i = 0; i < _nDocTypeAttrCount; i++)
474 {
475 if (docTypeNodeAttributes[i].name == name)
476 {
477 return i;
478 }
479 }
480 return -1;
481 }
482
483 private string GetAttributeFromElement(XmlElement elem, string name)
484 {
485 return elem.GetAttributeNode(name)?.Value;
486 }
487
488 public string GetAttribute(string name)
489 {
491 {
492 return null;
493 }
494 return _curNode.NodeType switch
495 {
500 _ => null,
501 };
502 }
503
504 private string GetAttributeFromElement(XmlElement elem, string name, string ns)
505 {
506 return elem.GetAttributeNode(name, ns)?.Value;
507 }
508
509 public string GetAttribute(string name, string ns)
510 {
512 {
513 return null;
514 }
515 return _curNode.NodeType switch
516 {
521 _ => null,
522 };
523 }
524
525 public string GetAttribute(int attributeIndex)
526 {
528 {
529 return null;
530 }
531 switch (_curNode.NodeType)
532 {
533 case XmlNodeType.Element:
535 return ((XmlElement)_curNode).Attributes[attributeIndex].Value;
536 case XmlNodeType.Attribute:
538 return ((XmlElement)_elemNode).Attributes[attributeIndex].Value;
539 case XmlNodeType.XmlDeclaration:
542 case XmlNodeType.DocumentType:
545 default:
546 throw new ArgumentOutOfRangeException("attributeIndex");
547 }
548 }
549
550 public void LogMove(int level)
551 {
553 _nLogLevel = level;
557 }
558
559 public void RollBackMove(ref int level)
560 {
562 level = _nLogLevel;
566 }
567
568 public void ResetToAttribute(ref int level)
569 {
571 {
572 return;
573 }
575 {
576 level -= 2;
577 }
578 else
579 {
580 while (_curNode.NodeType != XmlNodeType.Attribute && (_curNode = _curNode.ParentNode) != null)
581 {
582 level--;
583 }
584 }
585 _bOnAttrVal = false;
586 }
587
588 public void ResetMove(ref int level, ref XmlNodeType nt)
589 {
590 LogMove(level);
592 {
593 return;
594 }
595 if (_nAttrInd != -1)
596 {
597 if (_bOnAttrVal)
598 {
599 level--;
600 _bOnAttrVal = false;
601 }
603 level--;
604 _nAttrInd = -1;
606 return;
607 }
608 if (_bOnAttrVal && _curNode.NodeType != XmlNodeType.Attribute)
609 {
610 ResetToAttribute(ref level);
611 }
612 if (_curNode.NodeType == XmlNodeType.Attribute)
613 {
614 _curNode = ((XmlAttribute)_curNode).OwnerElement;
615 _attrIndex = -1;
616 level--;
617 nt = XmlNodeType.Element;
618 }
619 if (_curNode.NodeType == XmlNodeType.Element)
620 {
622 }
623 }
624
625 public bool MoveToAttribute(string name)
626 {
627 return MoveToAttribute(name, string.Empty);
628 }
629
630 private bool MoveToAttributeFromElement(XmlElement elem, string name, string ns)
631 {
633 xmlAttribute = ((ns.Length != 0) ? elem.GetAttributeNode(name, ns) : elem.GetAttributeNode(name));
634 if (xmlAttribute != null)
635 {
636 _bOnAttrVal = false;
637 _elemNode = elem;
639 _attrIndex = elem.Attributes.FindNodeOffsetNS(xmlAttribute);
640 if (_attrIndex != -1)
641 {
642 return true;
643 }
644 }
645 return false;
646 }
647
648 public bool MoveToAttribute(string name, string namespaceURI)
649 {
651 {
652 return false;
653 }
654 XmlNodeType nodeType = _curNode.NodeType;
655 if (nodeType == XmlNodeType.Element)
656 {
658 }
659 if (nodeType == XmlNodeType.Attribute)
660 {
662 }
663 if (nodeType == XmlNodeType.XmlDeclaration && namespaceURI.Length == 0)
664 {
665 if ((_nAttrInd = GetDecAttrInd(name)) != -1)
666 {
667 _bOnAttrVal = false;
668 return true;
669 }
670 }
671 else if (nodeType == XmlNodeType.DocumentType && namespaceURI.Length == 0 && (_nAttrInd = GetDocTypeAttrInd(name)) != -1)
672 {
673 _bOnAttrVal = false;
674 return true;
675 }
676 return false;
677 }
678
680 {
682 {
683 return;
684 }
686 switch (_curNode.NodeType)
687 {
688 case XmlNodeType.Element:
691 if (xmlAttribute != null)
692 {
696 }
697 break;
698 case XmlNodeType.Attribute:
701 if (xmlAttribute != null)
702 {
705 }
706 break;
707 case XmlNodeType.DocumentType:
708 case XmlNodeType.XmlDeclaration:
711 break;
712 }
713 }
714
715 public bool MoveToNextAttribute(ref int level)
716 {
718 {
719 return false;
720 }
721 switch (_curNode.NodeType)
722 {
723 case XmlNodeType.Attribute:
725 {
726 return false;
727 }
729 return true;
730 case XmlNodeType.Element:
731 if (_curNode.Attributes.Count > 0)
732 {
733 level++;
736 _attrIndex = 0;
737 return true;
738 }
739 break;
740 case XmlNodeType.XmlDeclaration:
741 if (_nDeclarationAttrCount == -1)
742 {
743 InitDecAttr();
744 }
745 _nAttrInd++;
747 {
748 if (_nAttrInd == 0)
749 {
750 level++;
751 }
752 _bOnAttrVal = false;
753 return true;
754 }
755 _nAttrInd--;
756 break;
757 case XmlNodeType.DocumentType:
758 if (_nDocTypeAttrCount == -1)
759 {
761 }
762 _nAttrInd++;
764 {
765 if (_nAttrInd == 0)
766 {
767 level++;
768 }
769 _bOnAttrVal = false;
770 return true;
771 }
772 _nAttrInd--;
773 break;
774 }
775 return false;
776 }
777
778 public bool MoveToParent()
779 {
780 XmlNode parentNode = _curNode.ParentNode;
781 if (parentNode != null)
782 {
783 _curNode = parentNode;
784 if (!_bOnAttrVal)
785 {
786 _attrIndex = 0;
787 }
788 return true;
789 }
790 return false;
791 }
792
793 public bool MoveToFirstChild()
794 {
796 if (firstChild != null)
797 {
799 if (!_bOnAttrVal)
800 {
801 _attrIndex = -1;
802 }
803 return true;
804 }
805 return false;
806 }
807
809 {
810 XmlNode nextSibling = node.NextSibling;
811 if (nextSibling != null)
812 {
814 if (!_bOnAttrVal)
815 {
816 _attrIndex = -1;
817 }
818 return true;
819 }
820 return false;
821 }
822
823 public bool MoveToNext()
824 {
825 if (_curNode.NodeType != XmlNodeType.Attribute)
826 {
828 }
830 }
831
832 public bool MoveToElement()
833 {
835 {
836 return false;
837 }
838 switch (_curNode.NodeType)
839 {
840 case XmlNodeType.Attribute:
841 if (_elemNode != null)
842 {
844 _attrIndex = -1;
845 return true;
846 }
847 break;
848 case XmlNodeType.DocumentType:
849 case XmlNodeType.XmlDeclaration:
850 if (_nAttrInd != -1)
851 {
852 _nAttrInd = -1;
853 return true;
854 }
855 break;
856 }
857 return false;
858 }
859
860 public string LookupNamespace(string prefix)
861 {
863 {
864 return null;
865 }
866 if (prefix == "xmlns")
867 {
868 return _nameTable.Add("http://www.w3.org/2000/xmlns/");
869 }
870 if (prefix == "xml")
871 {
872 return _nameTable.Add("http://www.w3.org/XML/1998/namespace");
873 }
874 if (prefix == null)
875 {
876 prefix = string.Empty;
877 }
878 string name = ((prefix.Length != 0) ? ("xmlns:" + prefix) : "xmlns");
880 while (xmlNode != null)
881 {
882 if (xmlNode.NodeType == XmlNodeType.Element)
883 {
885 if (xmlElement.HasAttributes)
886 {
887 XmlAttribute attributeNode = xmlElement.GetAttributeNode(name);
888 if (attributeNode != null)
889 {
890 return attributeNode.Value;
891 }
892 }
893 }
894 else if (xmlNode.NodeType == XmlNodeType.Attribute)
895 {
896 xmlNode = ((XmlAttribute)xmlNode).OwnerElement;
897 continue;
898 }
899 xmlNode = xmlNode.ParentNode;
900 }
901 if (prefix.Length == 0)
902 {
903 return string.Empty;
904 }
905 return null;
906 }
907
908 internal string DefaultLookupNamespace(string prefix)
909 {
911 {
912 if (prefix == "xmlns")
913 {
914 return _nameTable.Add("http://www.w3.org/2000/xmlns/");
915 }
916 if (prefix == "xml")
917 {
918 return _nameTable.Add("http://www.w3.org/XML/1998/namespace");
919 }
920 if (prefix == string.Empty)
921 {
922 return _nameTable.Add(string.Empty);
923 }
924 }
925 return null;
926 }
927
928 internal string LookupPrefix(string namespaceName)
929 {
930 if (_bCreatedOnAttribute || namespaceName == null)
931 {
932 return null;
933 }
934 if (namespaceName == "http://www.w3.org/2000/xmlns/")
935 {
936 return _nameTable.Add("xmlns");
937 }
938 if (namespaceName == "http://www.w3.org/XML/1998/namespace")
939 {
940 return _nameTable.Add("xml");
941 }
942 if (namespaceName.Length == 0)
943 {
944 return string.Empty;
945 }
947 while (xmlNode != null)
948 {
949 if (xmlNode.NodeType == XmlNodeType.Element)
950 {
952 if (xmlElement.HasAttributes)
953 {
954 XmlAttributeCollection attributes = xmlElement.Attributes;
955 for (int i = 0; i < attributes.Count; i++)
956 {
957 XmlAttribute xmlAttribute = attributes[i];
958 if (!(xmlAttribute.Value == namespaceName))
959 {
960 continue;
961 }
962 if (xmlAttribute.Prefix.Length == 0 && xmlAttribute.LocalName == "xmlns")
963 {
964 if (LookupNamespace(string.Empty) == namespaceName)
965 {
966 return string.Empty;
967 }
968 }
969 else if (xmlAttribute.Prefix == "xmlns")
970 {
971 string localName = xmlAttribute.LocalName;
972 if (LookupNamespace(localName) == namespaceName)
973 {
974 return _nameTable.Add(localName);
975 }
976 }
977 }
978 }
979 }
980 else if (xmlNode.NodeType == XmlNodeType.Attribute)
981 {
982 xmlNode = ((XmlAttribute)xmlNode).OwnerElement;
983 continue;
984 }
985 xmlNode = xmlNode.ParentNode;
986 }
987 return null;
988 }
989
991 {
994 {
995 return dictionary;
996 }
998 while (xmlNode != null)
999 {
1000 if (xmlNode.NodeType == XmlNodeType.Element)
1001 {
1003 if (xmlElement.HasAttributes)
1004 {
1005 XmlAttributeCollection attributes = xmlElement.Attributes;
1006 for (int i = 0; i < attributes.Count; i++)
1007 {
1008 XmlAttribute xmlAttribute = attributes[i];
1009 if (xmlAttribute.LocalName == "xmlns" && xmlAttribute.Prefix.Length == 0)
1010 {
1011 if (!dictionary.ContainsKey(string.Empty))
1012 {
1013 dictionary.Add(_nameTable.Add(string.Empty), _nameTable.Add(xmlAttribute.Value));
1014 }
1015 }
1016 else if (xmlAttribute.Prefix == "xmlns")
1017 {
1018 string localName = xmlAttribute.LocalName;
1019 if (!dictionary.ContainsKey(localName))
1020 {
1022 }
1023 }
1024 }
1025 }
1026 if (scope == XmlNamespaceScope.Local)
1027 {
1028 break;
1029 }
1030 }
1031 else if (xmlNode.NodeType == XmlNodeType.Attribute)
1032 {
1033 xmlNode = ((XmlAttribute)xmlNode).OwnerElement;
1034 continue;
1035 }
1036 xmlNode = xmlNode.ParentNode;
1037 }
1038 if (scope != XmlNamespaceScope.Local)
1039 {
1040 if (dictionary.ContainsKey(string.Empty) && dictionary[string.Empty] == string.Empty)
1041 {
1042 dictionary.Remove(string.Empty);
1043 }
1044 if (scope == XmlNamespaceScope.All)
1045 {
1046 dictionary.Add(_nameTable.Add("xml"), _nameTable.Add("http://www.w3.org/XML/1998/namespace"));
1047 }
1048 }
1049 return dictionary;
1050 }
1051
1053 {
1054 if (_nAttrInd != -1)
1055 {
1056 if (!_bOnAttrVal)
1057 {
1058 _bOnAttrVal = true;
1059 level++;
1060 nt = XmlNodeType.Text;
1061 return true;
1062 }
1063 return false;
1064 }
1065 if (_curNode.NodeType == XmlNodeType.Attribute)
1066 {
1068 if (firstChild != null)
1069 {
1072 level++;
1073 _bOnAttrVal = true;
1074 return true;
1075 }
1076 }
1077 else if (_bOnAttrVal)
1078 {
1079 XmlNode xmlNode = null;
1080 if ((_curNode.NodeType == XmlNodeType.EntityReference) & bResolveEntity)
1081 {
1084 level++;
1085 bResolveEntity = false;
1086 return true;
1087 }
1089 if (xmlNode == null)
1090 {
1091 XmlNode parentNode = _curNode.ParentNode;
1092 if (parentNode != null && parentNode.NodeType == XmlNodeType.EntityReference)
1093 {
1094 _curNode = parentNode;
1095 nt = XmlNodeType.EndEntity;
1096 level--;
1097 return true;
1098 }
1099 }
1100 if (xmlNode != null)
1101 {
1102 _curNode = xmlNode;
1104 return true;
1105 }
1106 return false;
1107 }
1108 return false;
1109 }
1110}
bool ICollection< KeyValuePair< TKey, TValue > >. Remove(KeyValuePair< TKey, TValue > keyValuePair)
void Add(TKey key, TValue value)
virtual ? XmlDocumentType DocumentType
string Add(char[] array, int offset, int length)
void CheckIndexCondition(int attributeIndex)
IDictionary< string, string > GetNamespacesInScope(XmlNamespaceScope scope)
bool ReadAttributeValue(ref int level, ref bool bResolveEntity, ref XmlNodeType nt)
string GetAttributeFromElement(XmlElement elem, string name, string ns)
string LookupPrefix(string namespaceName)
void ResetMove(ref int level, ref XmlNodeType nt)
bool MoveToAttributeFromElement(XmlElement elem, string name, string ns)
string GetAttribute(string name, string ns)
string GetAttribute(int attributeIndex)
bool MoveToAttribute(string name, string namespaceURI)
string GetAttributeFromElement(XmlElement elem, string name)
string GetDocumentTypeAttr(XmlDocumentType docType, string name)
string GetDeclarationAttr(XmlDeclaration decl, string name)
virtual ? string Value
Definition XmlNode.cs:62
virtual XmlSpace XmlSpace
Definition XmlNode.cs:295
virtual string BaseURI
Definition XmlNode.cs:233
virtual ? XmlNode ParentNode
Definition XmlNode.cs:76
virtual IXmlSchemaInfo SchemaInfo
Definition XmlNode.cs:230
virtual string XmlLang
Definition XmlNode.cs:322
virtual ? XmlNode NextSibling
Definition XmlNode.cs:104
virtual string NamespaceURI
Definition XmlNode.cs:139
virtual ? XmlNode FirstChild
Definition XmlNode.cs:120
virtual string Prefix
Definition XmlNode.cs:142
virtual ? XmlAttributeCollection Attributes
Definition XmlNode.cs:106
XmlNodeType NodeType
Definition XmlNode.cs:73