Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XmlEntityReference.cs
Go to the documentation of this file.
2
3namespace System.Xml;
4
6{
7 private readonly string _name;
8
10
11 public override string Name => _name;
12
13 public override string LocalName => _name;
14
15 public override string? Value
16 {
17 get
18 {
19 return null;
20 }
21 set
22 {
24 }
25 }
26
27 public override XmlNodeType NodeType => XmlNodeType.EntityReference;
28
29 public override bool IsReadOnly => true;
30
31 internal override bool IsContainer => true;
32
33 internal override XmlLinkedNode? LastNode
34 {
35 get
36 {
37 return _lastChild;
38 }
39 set
40 {
42 }
43 }
44
45 public override string BaseURI => OwnerDocument.BaseURI;
46
47 internal string ChildBaseURI
48 {
49 get
50 {
52 if (entityNode != null)
53 {
54 if (!string.IsNullOrEmpty(entityNode.SystemId))
55 {
56 return ConstructBaseURI(entityNode.BaseURI, entityNode.SystemId);
57 }
58 return entityNode.BaseURI;
59 }
60 return string.Empty;
61 }
62 }
63
64 protected internal XmlEntityReference(string name, XmlDocument doc)
65 : base(doc)
66 {
67 if (!doc.IsLoading && name.Length > 0 && name[0] == '#')
68 {
70 }
71 _name = doc.NameTable.Add(name);
73 }
74
75 public override XmlNode CloneNode(bool deep)
76 {
78 }
79
80 internal override void SetParent(XmlNode node)
81 {
82 base.SetParent(node);
83 if (LastNode == null && node != null && node != OwnerDocument)
84 {
86 xmlLoader.ExpandEntityReference(this);
87 }
88 }
89
90 internal override void SetParentForLoad(XmlNode node)
91 {
93 }
94
95 internal override bool IsValidChildType(XmlNodeType type)
96 {
97 switch (type)
98 {
99 case XmlNodeType.Element:
100 case XmlNodeType.Text:
101 case XmlNodeType.CDATA:
102 case XmlNodeType.EntityReference:
103 case XmlNodeType.ProcessingInstruction:
104 case XmlNodeType.Comment:
105 case XmlNodeType.Whitespace:
106 case XmlNodeType.SignificantWhitespace:
107 return true;
108 default:
109 return false;
110 }
111 }
112
113 public override void WriteTo(XmlWriter w)
114 {
115 w.WriteEntityRef(_name);
116 }
117
118 public override void WriteContentTo(XmlWriter w)
119 {
121 try
122 {
123 while (enumerator.MoveNext())
124 {
126 xmlNode.WriteTo(w);
127 }
128 }
129 finally
130 {
132 if (disposable != null)
133 {
135 }
136 }
137 }
138
139 private string ConstructBaseURI(string baseURI, string systemId)
140 {
141 if (baseURI == null)
142 {
143 return systemId;
144 }
145 int num = baseURI.LastIndexOf('/') + 1;
146 string text = baseURI;
147 if (num > 0 && num < baseURI.Length)
148 {
149 text = baseURI.Substring(0, num);
150 }
151 else if (num == 0)
152 {
153 text += "\\";
154 }
155 return text + systemId.Replace('\\', '/');
156 }
157}
static string Xdom_EntRef_SetVal
Definition SR.cs:1294
static string Xdom_InvalidCharacter_EntityReference
Definition SR.cs:1310
Definition SR.cs:7
override string BaseURI
virtual XmlEntityReference CreateEntityReference(string name)
XmlEntity GetEntityNode(string name)
override void SetParentForLoad(XmlNode node)
string ConstructBaseURI(string baseURI, string systemId)
override void WriteTo(XmlWriter w)
override bool IsValidChildType(XmlNodeType type)
override XmlNode CloneNode(bool deep)
override void WriteContentTo(XmlWriter w)
override void SetParent(XmlNode node)
override? XmlLinkedNode LastNode
XmlEntityReference(string name, XmlDocument doc)
virtual ? XmlDocument OwnerDocument
Definition XmlNode.cs:109
IEnumerator IEnumerable. GetEnumerator()
Definition XmlNode.cs:1001