Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
NavigatorOutput.cs
Go to the documentation of this file.
2
4
5internal sealed class NavigatorOutput : IRecordOutput
6{
7 private readonly XPathDocument _doc;
8
9 private int _documentIndex;
10
11 private readonly XmlRawWriter _wr;
12
14
15 internal NavigatorOutput(string baseUri)
16 {
17 _doc = new XPathDocument();
18 _wr = _doc.LoadFromWriter(XPathDocument.LoadFlags.AtomizeNames, baseUri);
19 }
20
22 {
23 BuilderInfo mainNode = record.MainNode;
25 switch (mainNode.NodeType)
26 {
27 case XmlNodeType.Element:
28 {
29 _wr.WriteStartElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI);
30 for (int i = 0; i < record.AttributeCount; i++)
31 {
33 BuilderInfo builderInfo = (BuilderInfo)record.AttributeList[i];
34 if (builderInfo.NamespaceURI == "http://www.w3.org/2000/xmlns/")
35 {
36 if (builderInfo.Prefix.Length == 0)
37 {
39 }
40 else
41 {
43 }
44 }
45 else
46 {
47 _wr.WriteAttributeString(builderInfo.Prefix, builderInfo.LocalName, builderInfo.NamespaceURI, builderInfo.Value);
48 }
49 }
51 if (mainNode.IsEmptyTag)
52 {
53 _wr.WriteEndElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI);
54 }
55 break;
56 }
57 case XmlNodeType.Text:
59 break;
60 case XmlNodeType.SignificantWhitespace:
62 break;
63 case XmlNodeType.ProcessingInstruction:
65 break;
66 case XmlNodeType.Comment:
68 break;
69 case XmlNodeType.EndElement:
70 _wr.WriteEndElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI);
71 break;
72 }
73 record.Reset();
74 return Processor.OutputResult.Continue;
75 }
76
77 public void TheEnd()
78 {
79 _wr.Close();
80 }
81}
static readonly Empty Value
Definition Empty.cs:5
XmlRawWriter LoadFromWriter(LoadFlags flags, string baseUri)
virtual XPathNavigator CreateNavigator()
virtual void Close(WriteState currentState)
override void WriteEndElement()
void WriteNamespaceDeclaration(string prefix, string ns)
void WriteComment(string? text)
void WriteProcessingInstruction(string name, string? text)
void WriteString(string? text)
void WriteAttributeString(string localName, string? ns, string? value)
Definition XmlWriter.cs:46
void WriteStartElement(string localName, string? ns)
Definition XmlWriter.cs:30
Processor.OutputResult RecordDone(RecordBuilder record)