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

◆ LoadFromReader()

void System.Xml.XPath.XPathDocument.LoadFromReader ( XmlReader reader,
XmlSpace space )
inlinepackage

Definition at line 119 of file XPathDocument.cs.

120 {
121 if (reader == null)
122 {
123 throw new ArgumentNullException("reader");
124 }
125 IXmlLineInfo xmlLineInfo = reader as IXmlLineInfo;
126 if (xmlLineInfo == null || !xmlLineInfo.HasLineInfo())
127 {
128 xmlLineInfo = null;
129 }
130 _hasLineInfo = xmlLineInfo != null;
131 _nameTable = reader.NameTable;
133 try
134 {
135 bool flag = reader.ReadState == ReadState.Initial;
136 int depth = reader.Depth;
137 string text = _nameTable.Get("http://www.w3.org/2000/xmlns/");
138 if (flag && !reader.Read())
139 {
140 return;
141 }
142 while (flag || reader.Depth >= depth)
143 {
144 switch (reader.NodeType)
145 {
146 case XmlNodeType.Element:
147 {
148 bool isEmptyElement = reader.IsEmptyElement;
149 xPathDocumentBuilder.WriteStartElement(reader.Prefix, reader.LocalName, reader.NamespaceURI, reader.BaseURI);
150 while (reader.MoveToNextAttribute())
151 {
152 string namespaceURI = reader.NamespaceURI;
153 if ((object)namespaceURI == text)
154 {
155 if (reader.Prefix.Length == 0)
156 {
157 xPathDocumentBuilder.WriteNamespaceDeclaration(string.Empty, reader.Value);
158 }
159 else
160 {
161 xPathDocumentBuilder.WriteNamespaceDeclaration(reader.LocalName, reader.Value);
162 }
163 }
164 else
165 {
166 xPathDocumentBuilder.WriteStartAttribute(reader.Prefix, reader.LocalName, namespaceURI);
167 xPathDocumentBuilder.WriteString(reader.Value, TextBlockType.Text);
168 xPathDocumentBuilder.WriteEndAttribute();
169 }
170 }
171 if (isEmptyElement)
172 {
174 }
175 break;
176 }
177 case XmlNodeType.EndElement:
179 break;
180 case XmlNodeType.Text:
181 case XmlNodeType.CDATA:
182 xPathDocumentBuilder.WriteString(reader.Value, TextBlockType.Text);
183 break;
184 case XmlNodeType.SignificantWhitespace:
185 if (reader.XmlSpace == XmlSpace.Preserve)
186 {
187 xPathDocumentBuilder.WriteString(reader.Value, TextBlockType.SignificantWhitespace);
188 break;
189 }
190 goto case XmlNodeType.Whitespace;
191 case XmlNodeType.Whitespace:
192 if (space == XmlSpace.Preserve && (!flag || reader.Depth != 0))
193 {
194 xPathDocumentBuilder.WriteString(reader.Value, TextBlockType.Whitespace);
195 }
196 break;
197 case XmlNodeType.Comment:
198 xPathDocumentBuilder.WriteComment(reader.Value);
199 break;
200 case XmlNodeType.ProcessingInstruction:
201 xPathDocumentBuilder.WriteProcessingInstruction(reader.LocalName, reader.Value, reader.BaseURI);
202 break;
203 case XmlNodeType.EntityReference:
204 reader.ResolveEntity();
205 break;
206 case XmlNodeType.DocumentType:
207 {
208 IDtdInfo dtdInfo = reader.DtdInfo;
209 if (dtdInfo != null)
210 {
211 xPathDocumentBuilder.CreateIdTables(dtdInfo);
212 }
213 break;
214 }
215 }
216 if (!reader.Read())
217 {
218 break;
219 }
220 }
221 }
222 finally
223 {
224 xPathDocumentBuilder.Close();
225 }
226 }
string? Get(char[] array, int offset, int length)

References System.Xml.XPath.XPathDocument._hasLineInfo, System.Xml.XPath.XPathDocument._nameTable, System.Xml.XmlReader.BaseURI, System.Xml.XmlReader.Depth, System.Xml.Dictionary, System.Xml.XmlReader.DtdInfo, System.Xml.XmlNameTable.Get(), System.Xml.XmlReader.IsEmptyElement, System.Xml.XmlReader.LocalName, System.Xml.XmlReader.MoveToNextAttribute(), System.Xml.XmlReader.NamespaceURI, System.Xml.XmlReader.NameTable, System.Xml.XmlReader.NodeType, System.Xml.XmlReader.Prefix, System.Xml.XmlReader.Read(), System.Xml.XmlReader.ResolveEntity(), System.text, System.Xml.XmlReader.Value, and System.Xml.XmlReader.XmlSpace.

Referenced by System.Xml.XPath.XPathDocument.XPathDocument(), System.Xml.XPath.XPathDocument.XPathDocument(), System.Xml.XPath.XPathDocument.XPathDocument(), and System.Xml.XPath.XPathDocument.XPathDocument().