Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
XmlRenderer.cs
1using System.Collections.Generic;
2using System.Text;
3using System.Threading.Tasks;
4using System.Xml;
10
12{
16 public class XmlRenderer : Renderer
17 {
21 protected readonly XmlWriter xmlOutput;
22
23 private bool elementsOpen = false;
24
28 public XmlRenderer()
29 : this(XML.WriterSettings(false, true))
30 {
31 }
32
37 public XmlRenderer(XmlWriterSettings XmlSettings)
38 : base()
39 {
40 this.xmlOutput = XmlWriter.Create(this.Output, XmlSettings);
41 }
42
48 public XmlRenderer(StringBuilder Output, XmlWriterSettings XmlSettings)
49 : base(Output)
50 {
51 this.xmlOutput = XmlWriter.Create(this.Output, XmlSettings);
52 }
53
55 public override void Dispose()
56 {
57 base.Dispose();
58
59 this.xmlOutput.Dispose();
60 }
61
65 public override Task RenderDocumentHeader()
66 {
67 this.xmlOutput.WriteStartElement("parsedMakdown", "http://waher.se/Schema/Markdown.xsd");
68 this.xmlOutput.WriteAttributeString("isDynamic", CommonTypes.Encode(this.Document.IsDynamic));
69
70 if (!(this.Document.MetaData is null))
71 {
72 this.xmlOutput.WriteStartElement("metaData");
73
74 foreach (KeyValuePair<string, KeyValuePair<string, bool>[]> P in this.Document.MetaData)
75 {
76 this.xmlOutput.WriteStartElement("tag", P.Key);
77
78 foreach (KeyValuePair<string, bool> P2 in P.Value)
79 {
80 this.xmlOutput.WriteStartElement("value", P2.Key);
81 this.xmlOutput.WriteAttributeString("lineBreak", CommonTypes.Encode(P2.Value));
82 this.xmlOutput.WriteEndElement();
83 }
84
85 this.xmlOutput.WriteEndElement();
86 }
87
88 this.xmlOutput.WriteEndElement();
89 }
90
91 this.xmlOutput.WriteStartElement("elements");
92 this.elementsOpen = true;
93
94 return Task.CompletedTask;
95 }
96
100 public override async Task RenderFootnotes()
101 {
102 if (this.elementsOpen)
103 {
104 this.xmlOutput.WriteEndElement();
105 this.elementsOpen = false;
106 }
107
108 await this.RenderReferences();
109
110 if (!(this.Document.FootnoteOrder is null))
111 {
112 this.xmlOutput.WriteStartElement("footnotes");
113
114 foreach (string s in this.Document.FootnoteOrder)
115 {
116 if ((this.Document?.TryGetFootnote(s, out Footnote F) ?? false) &&
117 F.Referenced)
118 {
119 await F.Render(this);
120 }
121 }
122
123 this.xmlOutput.WriteEndElement();
124 }
125 }
126
127 private async Task RenderReferences()
128 {
129 if (!(this.Document.References is null))
130 {
131 this.xmlOutput.WriteStartElement("references");
132
133 foreach (KeyValuePair<string, Multimedia> P in this.Document.References)
134 {
135 this.xmlOutput.WriteStartElement("reference");
136 this.xmlOutput.WriteAttributeString("key", P.Key);
137
138 await P.Value.Render(this);
139
140 this.xmlOutput.WriteEndElement();
141 }
142
143 this.xmlOutput.WriteEndElement();
144 }
145 }
146
150 public override async Task RenderDocumentFooter()
151 {
152 if (this.elementsOpen)
153 {
154 this.xmlOutput.WriteEndElement();
155 this.elementsOpen = false;
156
157 await this.RenderReferences();
158 }
159
160 this.xmlOutput.WriteEndElement();
161 this.xmlOutput.Flush();
162 }
163
169 private async Task RenderElement(MarkdownElementChildren Element, string ElementName)
170 {
171 this.xmlOutput.WriteStartElement(ElementName);
172 await this.RenderChildren(Element);
173 this.xmlOutput.WriteEndElement();
174 }
175
181 private async Task RenderElement(MarkdownElementSingleChild Element, string ElementName)
182 {
183 this.xmlOutput.WriteStartElement(ElementName);
184 await this.RenderChild(Element);
185 this.xmlOutput.WriteEndElement();
186 }
187
193 private void RenderElement(MarkdownElement _, string ElementName)
194 {
195 this.xmlOutput.WriteElementString(ElementName, string.Empty);
196 }
197
198 #region Span Elements
199
204 public override async Task Render(Abbreviation Element)
205 {
206 this.xmlOutput.WriteStartElement(nameof(Abbreviation));
207 this.xmlOutput.WriteAttributeString("description", Element.Description);
208
209 await this.RenderChildren(Element);
210
211 this.xmlOutput.WriteEndElement();
212 }
213
218 public override Task Render(AutomaticLinkMail Element)
219 {
220 this.xmlOutput.WriteStartElement(nameof(AutomaticLinkMail));
221 this.xmlOutput.WriteAttributeString("eMail", Element.EMail);
222 this.xmlOutput.WriteEndElement();
223
224 return Task.CompletedTask;
225 }
226
231 public override Task Render(AutomaticLinkUrl Element)
232 {
233 this.xmlOutput.WriteStartElement(nameof(AutomaticLinkUrl));
234 this.xmlOutput.WriteAttributeString("url", Element.URL);
235 this.xmlOutput.WriteEndElement();
236
237 return Task.CompletedTask;
238 }
239
244 public override Task Render(Delete Element)
245 {
246 return this.RenderElement(Element, nameof(Delete));
247 }
248
253 public override Task Render(DetailsReference Element)
254 {
255 this.RenderElement(Element, "Details");
256 return Task.CompletedTask;
257 }
258
263 public override Task Render(EmojiReference Element)
264 {
265 this.xmlOutput.WriteStartElement("Emoji");
266 this.xmlOutput.WriteAttributeString("shortName", Element.Emoji.ShortName);
267
268 if (Element.Level > 1)
269 this.xmlOutput.WriteAttributeString("level", Element.Level.ToString());
270
271 this.xmlOutput.WriteEndElement();
272
273 return Task.CompletedTask;
274 }
275
280 public override Task Render(Emphasize Element)
281 {
282 return this.RenderElement(Element, nameof(Emphasize));
283 }
284
289 public override async Task Render(FootnoteReference Element)
290 {
291 this.xmlOutput.WriteStartElement(nameof(FootnoteReference));
292 this.xmlOutput.WriteAttributeString("key", Element.Key);
293
294 if (this.Document?.TryGetFootnoteNumber(Element.Key, out int Nr) ?? false)
295 this.xmlOutput.WriteAttributeString("nr", Nr.ToString());
296
297 if (this.Document?.TryGetFootnote(Element.Key, out Footnote Footnote) ?? false)
298 {
299 if (Element.AutoExpand)
300 await this.Render(Footnote);
301 else
302 Footnote.Referenced = true;
303 }
304
305 this.xmlOutput.WriteEndElement();
306 }
307
312 public override Task Render(HashTag Element)
313 {
314 this.xmlOutput.WriteElementString(nameof(HashTag), Element.Tag);
315
316 return Task.CompletedTask;
317 }
318
323 public override Task Render(HtmlEntity Element)
324 {
325 this.xmlOutput.WriteElementString(nameof(HtmlEntity), Element.Entity);
326
327 return Task.CompletedTask; // TODO
328 }
329
334 public override Task Render(HtmlEntityUnicode Element)
335 {
336 this.xmlOutput.WriteElementString(nameof(HtmlEntityUnicode), Element.Code.ToString());
337
338 return Task.CompletedTask;
339 }
340
345 public override Task Render(InlineCode Element)
346 {
347 this.xmlOutput.WriteStartElement(nameof(InlineCode));
348 this.xmlOutput.WriteCData(Element.Code);
349 this.xmlOutput.WriteEndElement();
350
351 return Task.CompletedTask;
352 }
353
358 public override Task Render(InlineHTML Element)
359 {
360 this.xmlOutput.WriteStartElement("Html");
361 this.xmlOutput.WriteCData(Element.HTML);
362 this.xmlOutput.WriteEndElement();
363
364 return Task.CompletedTask;
365 }
366
371 public override Task Render(InlineScript Element)
372 {
373 this.xmlOutput.WriteStartElement("Script");
374 this.xmlOutput.WriteAttributeString("expression", Element.Expression.Script);
375 this.xmlOutput.WriteAttributeString("aloneInParagraph", CommonTypes.Encode(Element.AloneInParagraph));
376 this.xmlOutput.WriteEndElement();
377
378 return Task.CompletedTask;
379 }
380
385 public override Task Render(InlineText Element)
386 {
387 this.xmlOutput.WriteElementString(nameof(InlineText), Element.Value);
388
389 return Task.CompletedTask;
390 }
391
396 public override Task Render(Insert Element)
397 {
398 return this.RenderElement(Element, nameof(Insert));
399 }
400
405 public override Task Render(LineBreak Element)
406 {
407 this.xmlOutput.WriteElementString(nameof(LineBreak), string.Empty);
408
409 return Task.CompletedTask; // TODO
410 }
411
416 public override async Task Render(Link Element)
417 {
418 this.xmlOutput.WriteStartElement(nameof(Link));
419 this.xmlOutput.WriteAttributeString("url", Element.Url);
420 this.xmlOutput.WriteAttributeString("title", Element.Title);
421
422 await this.RenderChildren(Element);
423
424 this.xmlOutput.WriteEndElement();
425 }
426
431 public override async Task Render(LinkReference Element)
432 {
433 this.xmlOutput.WriteStartElement(nameof(LinkReference));
434 this.xmlOutput.WriteAttributeString("label", Element.Label);
435
436 await this.RenderChildren(Element);
437
438 this.xmlOutput.WriteEndElement();
439 }
440
445 public override Task Render(MetaReference Element)
446 {
447 this.xmlOutput.WriteStartElement(nameof(MetaReference));
448 this.xmlOutput.WriteAttributeString("key", Element.Key);
449 this.xmlOutput.WriteEndElement();
450
451 return Task.CompletedTask;
452 }
453
458 public override async Task Render(Multimedia Element)
459 {
460 this.xmlOutput.WriteStartElement(nameof(Multimedia));
461 this.xmlOutput.WriteAttributeString("aloneInParagraph", CommonTypes.Encode(Element.AloneInParagraph));
462
463 await this.RenderChildren(Element);
464
465 foreach (MultimediaItem Item in Element.Items)
466 Item.Export(this.xmlOutput);
467
468 this.xmlOutput.WriteEndElement();
469 }
470
475 public override async Task Render(MultimediaReference Element)
476 {
477 this.xmlOutput.WriteStartElement(nameof(MultimediaReference));
478 this.xmlOutput.WriteAttributeString("label", Element.Label);
479
480 await this.RenderChildren(Element);
481
482 this.xmlOutput.WriteEndElement();
483 }
484
489 public override Task Render(StrikeThrough Element)
490 {
491 return this.RenderElement(Element, nameof(StrikeThrough));
492 }
493
498 public override Task Render(Strong Element)
499 {
500 return this.RenderElement(Element, nameof(Strong));
501 }
502
507 public override Task Render(SubScript Element)
508 {
509 return this.RenderElement(Element, nameof(SubScript));
510 }
511
516 public override Task Render(SuperScript Element)
517 {
518 return this.RenderElement(Element, nameof(SuperScript));
519 }
520
525 public override Task Render(Underline Element)
526 {
527 return this.RenderElement(Element, nameof(Underline));
528 }
529
530 #endregion
531
532 #region Block elements
533
538 public override Task Render(BlockQuote Element)
539 {
540 return this.RenderElement(Element, nameof(BlockQuote));
541 }
542
547 public override Task Render(BulletList Element)
548 {
549 return this.RenderElement(Element, nameof(BulletList));
550 }
551
556 public override Task Render(CenterAligned Element)
557 {
558 return this.RenderElement(Element, nameof(CenterAligned));
559 }
560
565 public override Task Render(CodeBlock Element)
566 {
567 this.xmlOutput.WriteStartElement(nameof(CodeBlock));
568 this.xmlOutput.WriteAttributeString("language", Element.Language);
569 this.xmlOutput.WriteAttributeString("start", Element.Start.ToString());
570 this.xmlOutput.WriteAttributeString("end", Element.End.ToString());
571 this.xmlOutput.WriteAttributeString("indent", Element.Indent.ToString());
572 this.xmlOutput.WriteAttributeString("indentString", Element.IndentString);
573
574 int i;
575
576 for (i = Element.Start; i <= Element.End; i++)
577 this.xmlOutput.WriteElementString("Row", Element.Rows[i]);
578
579 this.xmlOutput.WriteEndElement();
580
581 return Task.CompletedTask;
582 }
583
588 public override Task Render(CommentBlock Element)
589 {
590 this.xmlOutput.WriteStartElement(nameof(CommentBlock));
591
592 foreach (string s in Element.Rows)
593 this.xmlOutput.WriteElementString("Row", s);
594
595 this.xmlOutput.WriteEndElement();
596
597 return Task.CompletedTask;
598 }
599
604 public override Task Render(DefinitionDescriptions Element)
605 {
606 return this.RenderElement(Element, nameof(DefinitionDescriptions));
607 }
608
613 public override Task Render(DefinitionList Element)
614 {
615 return this.RenderElement(Element, nameof(DefinitionList));
616 }
617
622 public override Task Render(DefinitionTerms Element)
623 {
624 return this.RenderElement(Element, nameof(DefinitionTerms));
625 }
626
631 public override Task Render(DeleteBlocks Element)
632 {
633 return this.RenderElement(Element, nameof(DeleteBlocks));
634 }
635
640 public override async Task Render(Footnote Element)
641 {
642 this.xmlOutput.WriteStartElement(nameof(Footnote));
643 this.xmlOutput.WriteAttributeString("key", Element.Key);
644
645 if (Element.Document.TryGetFootnoteNumber(Element.Key, out int Nr))
646 this.xmlOutput.WriteAttributeString("nr", Nr.ToString());
647
648 await this.RenderChildren(Element);
649
650 this.xmlOutput.WriteEndElement();
651 }
652
657 public override async Task Render(Header Element)
658 {
659 this.xmlOutput.WriteStartElement(nameof(Header));
660 this.xmlOutput.WriteAttributeString("id", await Element.Id);
661 this.xmlOutput.WriteAttributeString("level", Element.Level.ToString());
662
663 await this.RenderChildren(Element);
664
665 this.xmlOutput.WriteEndElement();
666 }
667
672 public override Task Render(HorizontalRule Element)
673 {
674 this.RenderElement(Element, nameof(HorizontalRule));
675 return Task.CompletedTask;
676 }
677
682 public override Task Render(HtmlBlock Element)
683 {
684 return this.RenderElement(Element, nameof(HtmlBlock));
685 }
686
691 public override Task Render(InsertBlocks Element)
692 {
693 return this.RenderElement(Element, nameof(InsertBlocks));
694 }
695
700 public override Task Render(InvisibleBreak Element)
701 {
702 this.RenderElement(Element, nameof(InvisibleBreak));
703 return Task.CompletedTask;
704 }
705
710 public override Task Render(LeftAligned Element)
711 {
712 return this.RenderElement(Element, nameof(LeftAligned));
713 }
714
719 public override Task Render(MarginAligned Element)
720 {
721 return this.RenderElement(Element, nameof(MarginAligned));
722 }
723
728 public override Task Render(NestedBlock Element)
729 {
730 return this.RenderElement(Element, nameof(NestedBlock));
731 }
732
737 public override async Task Render(NumberedItem Element)
738 {
739 this.xmlOutput.WriteStartElement(nameof(NumberedItem));
740 this.xmlOutput.WriteAttributeString("number", Element.Number.ToString());
741 this.xmlOutput.WriteAttributeString("explicit", CommonTypes.Encode(Element.NumberExplicit));
742
743 await this.RenderChild(Element);
744
745 this.xmlOutput.WriteEndElement();
746 }
747
752 public override Task Render(NumberedList Element)
753 {
754 return this.RenderElement(Element, nameof(NumberedList));
755 }
756
761 public override async Task Render(Paragraph Element)
762 {
763 this.xmlOutput.WriteStartElement(nameof(Paragraph));
764
765 if (Element.Implicit)
766 this.xmlOutput.WriteAttributeString("implicit", CommonTypes.Encode(Element.Implicit));
767
768 await this.RenderChildren(Element);
769 this.xmlOutput.WriteEndElement();
770 }
771
776 public override Task Render(RightAligned Element)
777 {
778 return this.RenderElement(Element, nameof(RightAligned));
779 }
780
785 public override async Task Render(Sections Element)
786 {
787 this.xmlOutput.WriteStartElement(nameof(Sections));
788 this.xmlOutput.WriteAttributeString("nrColumns", Element.InitialNrColumns.ToString());
789 await this.RenderChildren(Element);
790 this.xmlOutput.WriteEndElement();
791 }
792
797 public override Task Render(SectionSeparator Element)
798 {
799 this.xmlOutput.WriteStartElement(nameof(SectionSeparator));
800 this.xmlOutput.WriteAttributeString("sectionNr", Element.SectionNr.ToString());
801 this.xmlOutput.WriteAttributeString("nrColumns", Element.NrColumns.ToString());
802 this.xmlOutput.WriteEndElement();
803
804 return Task.CompletedTask;
805 }
806
811 public override async Task Render(Table Element)
812 {
814 MarkdownElement[] Row;
815 TextAlignment?[] CellAlignments;
816 int NrRows, RowIndex;
817 int NrColumns = Element.Columns;
818 int ColumnIndex;
819
820 this.xmlOutput.WriteStartElement(nameof(Table));
821 this.xmlOutput.WriteAttributeString("caption", Element.Caption);
822 this.xmlOutput.WriteAttributeString("id", Element.Id);
823 this.xmlOutput.WriteAttributeString("columns", Element.Columns.ToString());
824
825 foreach (TextAlignment Col in Element.ColumnAlignments)
826 {
827 this.xmlOutput.WriteStartElement("Column");
828 this.xmlOutput.WriteAttributeString("alignment", Col.ToString());
829 this.xmlOutput.WriteEndElement();
830 }
831
832 NrRows = Element.Headers.Length;
833 for (RowIndex = 0; RowIndex < NrRows; RowIndex++)
834 {
835 Row = Element.Headers[RowIndex];
836 CellAlignments = Element.HeaderCellAlignments[RowIndex];
837
838 this.xmlOutput.WriteStartElement("HeaderRow");
839
840 for (ColumnIndex = 0;ColumnIndex<NrColumns; ColumnIndex++)
841 {
842 E = Row[ColumnIndex];
843
844 if (E is null)
845 this.xmlOutput.WriteElementString("Continue", string.Empty);
846 else
847 {
848 this.xmlOutput.WriteStartElement("HeaderCell");
849 this.xmlOutput.WriteAttributeString("alignment",
850 (CellAlignments[ColumnIndex] ?? Element.ColumnAlignments[ColumnIndex]).ToString());
851
852 await E.Render(this);
853
854 this.xmlOutput.WriteEndElement();
855 }
856 }
857
858 this.xmlOutput.WriteEndElement();
859 }
860
861 NrRows = Element.Rows.Length;
862 for (RowIndex = 0; RowIndex < NrRows; RowIndex++)
863 {
864 Row = Element.Rows[RowIndex];
865 CellAlignments = Element.RowCellAlignments[RowIndex];
866
867 this.xmlOutput.WriteStartElement("Row");
868
869 for (ColumnIndex = 0; ColumnIndex < NrColumns; ColumnIndex++)
870 {
871 E = Row[ColumnIndex];
872
873 if (E is null)
874 this.xmlOutput.WriteElementString("Continue", string.Empty);
875 else
876 {
877 this.xmlOutput.WriteStartElement("Cell");
878 this.xmlOutput.WriteAttributeString("alignment",
879 (CellAlignments[ColumnIndex] ?? Element.ColumnAlignments[ColumnIndex]).ToString());
880
881 await E.Render(this);
882
883 this.xmlOutput.WriteEndElement();
884 }
885 }
886
887 this.xmlOutput.WriteEndElement();
888 }
889
890 this.xmlOutput.WriteEndElement();
891 }
892
897 public override async Task Render(TaskItem Element)
898 {
899 this.xmlOutput.WriteStartElement(nameof(TaskItem));
900 this.xmlOutput.WriteAttributeString("isChecked", CommonTypes.Encode(Element.IsChecked));
901 await this.RenderChild(Element);
902 this.xmlOutput.WriteEndElement();
903 }
904
909 public override Task Render(TaskList Element)
910 {
911 return this.RenderElement(Element, nameof(TaskList));
912 }
913
918 public override async Task Render(UnnumberedItem Element)
919 {
920 this.xmlOutput.WriteStartElement("UnnumberedItem");
921 this.xmlOutput.WriteAttributeString("prefix", Element.Prefix);
922 await this.RenderChild(Element);
923 this.xmlOutput.WriteEndElement();
924 }
925
926 #endregion
927
928 }
929}
Helps with parsing of commong data types.
Definition: CommonTypes.cs:13
static string Encode(bool x)
Encodes a Boolean for use in XML and other formats.
Definition: CommonTypes.cs:594
bool TryGetFootnoteNumber(string Key, out int Number)
Tries to get the number of a footnote, given its key.
IEnumerable< KeyValuePair< string, KeyValuePair< string, bool >[]> > MetaData
Meta-data
IEnumerable< string > FootnoteOrder
Order of footnotes.
IEnumerable< KeyValuePair< string, Multimedia > > References
Multimedia references
Represents a block quote in a markdown document.
Definition: BlockQuote.cs:11
Represents a bullet list in a markdown document.
Definition: BulletList.cs:11
Represents a center-aligned set of blocks in a markdown document.
Represents a code block in a markdown document.
Definition: CodeBlock.cs:16
string IndentString
String used for indentation.
Definition: CodeBlock.cs:273
Represents a comment block in a markdown document.
Definition: CommentBlock.cs:10
Represents a definition list in a markdown document.
Represents inserted blocks in a markdown document.
Definition: DeleteBlocks.cs:11
Represents a header in a markdown document.
Definition: Header.cs:15
Represents a block of HTML in a markdown document.
Definition: HtmlBlock.cs:11
Represents inserted blocks in a markdown document.
Definition: InsertBlocks.cs:11
Represents a left-aligned set of blocks in a markdown document.
Definition: LeftAligned.cs:11
Represents a margin-aligned set of blocks in a markdown document.
Represents a nested block with no special formatting rules in a markdown document.
Definition: NestedBlock.cs:11
Represents a numbered item in an ordered list.
Definition: NumberedItem.cs:10
bool NumberExplicit
If number is explicitly provided (true) or inferred (false).
Definition: NumberedItem.cs:40
Represents a numbered list in a markdown document.
Definition: NumberedList.cs:11
Represents a paragraph in a markdown document.
Definition: Paragraph.cs:11
bool Implicit
If paragraph is implicit or not.
Definition: Paragraph.cs:41
Represents a right-aligned set of blocks in a markdown document.
Definition: RightAligned.cs:11
int NrColumns
Number of columns in following section.
Represents a sequence of sections.
Definition: Sections.cs:11
int InitialNrColumns
Number of columns for initial section.
Definition: Sections.cs:32
Represents a table in a markdown document.
Definition: Table.cs:11
Represents a task item in a task list.
Definition: TaskItem.cs:10
bool IsChecked
If the item is checked or not.
Definition: TaskItem.cs:31
Represents a task list in a markdown document.
Definition: TaskList.cs:11
Represents an unnumbered item in an ordered list.
Abstract base class for all markdown elements with a variable number of child elements.
Abstract base class for all markdown elements.
abstract Task Render(IRenderer Output)
Renders the element.
MarkdownDocument Document
Markdown document.
Abstract base class for all markdown elements with one child element.
void Export(XmlWriter Output)
Exports the element to XML.
int Level
Level (number of colons used to define the emoji)
bool AutoExpand
If the footnote should automatically be expanded when rendered, if format supports auto-expansion.
Represents an HTML entity in Unicode format.
bool AloneInParagraph
If the element is alone in a paragraph.
Definition: InlineScript.cs:55
bool AloneInParagraph
If the element is alone in a paragraph.
Definition: Multimedia.cs:45
Abstract base class for Markdown renderers.
Definition: Renderer.cs:14
readonly StringBuilder Output
Renderer output.
Definition: Renderer.cs:18
Task RenderChild(MarkdownElementSingleChild Element)
Renders the child of Element .
Definition: Renderer.cs:175
async Task RenderChildren(MarkdownElementChildren Element)
Renders the children of Element .
Definition: Renderer.cs:147
MarkdownDocument Document
Reference to Markdown document being processed.
Definition: Renderer.cs:23
Renders XML from a Markdown document.
Definition: XmlRenderer.cs:17
override void Dispose()
Disposes of the renderer.
Definition: XmlRenderer.cs:55
override Task Render(StrikeThrough Element)
Renders Element .
Definition: XmlRenderer.cs:489
override Task Render(HashTag Element)
Renders Element .
Definition: XmlRenderer.cs:312
override async Task Render(LinkReference Element)
Renders Element .
Definition: XmlRenderer.cs:431
override async Task RenderDocumentFooter()
Renders the document header.
Definition: XmlRenderer.cs:150
override Task Render(InsertBlocks Element)
Renders Element .
Definition: XmlRenderer.cs:691
override async Task Render(Footnote Element)
Renders Element .
Definition: XmlRenderer.cs:640
override Task Render(MarginAligned Element)
Renders Element .
Definition: XmlRenderer.cs:719
override Task Render(TaskList Element)
Renders Element .
Definition: XmlRenderer.cs:909
override async Task Render(Table Element)
Renders Element .
Definition: XmlRenderer.cs:811
override Task Render(NestedBlock Element)
Renders Element .
Definition: XmlRenderer.cs:728
override Task Render(InlineCode Element)
Renders Element .
Definition: XmlRenderer.cs:345
override Task Render(Emphasize Element)
Renders Element .
Definition: XmlRenderer.cs:280
override async Task Render(Sections Element)
Renders Element .
Definition: XmlRenderer.cs:785
override Task Render(BulletList Element)
Renders Element .
Definition: XmlRenderer.cs:547
override Task Render(HtmlEntityUnicode Element)
Renders Element .
Definition: XmlRenderer.cs:334
override Task Render(CenterAligned Element)
Renders Element .
Definition: XmlRenderer.cs:556
override async Task Render(FootnoteReference Element)
Renders Element .
Definition: XmlRenderer.cs:289
override Task Render(NumberedList Element)
Renders Element .
Definition: XmlRenderer.cs:752
override Task Render(DefinitionTerms Element)
Renders Element .
Definition: XmlRenderer.cs:622
override Task Render(SubScript Element)
Renders Element .
Definition: XmlRenderer.cs:507
override Task Render(InlineHTML Element)
Renders Element .
Definition: XmlRenderer.cs:358
override Task Render(AutomaticLinkMail Element)
Renders Element .
Definition: XmlRenderer.cs:218
override async Task Render(Link Element)
Renders Element .
Definition: XmlRenderer.cs:416
override async Task Render(MultimediaReference Element)
Renders Element .
Definition: XmlRenderer.cs:475
override async Task Render(Abbreviation Element)
Renders Element .
Definition: XmlRenderer.cs:204
override Task Render(DetailsReference Element)
Renders Element .
Definition: XmlRenderer.cs:253
XmlRenderer(XmlWriterSettings XmlSettings)
Renders XML from a Markdown document.
Definition: XmlRenderer.cs:37
override Task Render(Strong Element)
Renders Element .
Definition: XmlRenderer.cs:498
override Task Render(InlineText Element)
Renders Element .
Definition: XmlRenderer.cs:385
override Task Render(SuperScript Element)
Renders Element .
Definition: XmlRenderer.cs:516
override async Task Render(NumberedItem Element)
Renders Element .
Definition: XmlRenderer.cs:737
XmlRenderer()
Renders XML from a Markdown document.
Definition: XmlRenderer.cs:28
override Task Render(Insert Element)
Renders Element .
Definition: XmlRenderer.cs:396
override Task Render(HorizontalRule Element)
Renders Element .
Definition: XmlRenderer.cs:672
override Task Render(BlockQuote Element)
Renders Element .
Definition: XmlRenderer.cs:538
override Task Render(HtmlEntity Element)
Renders Element .
Definition: XmlRenderer.cs:323
override Task Render(RightAligned Element)
Renders Element .
Definition: XmlRenderer.cs:776
override Task Render(Underline Element)
Renders Element .
Definition: XmlRenderer.cs:525
override Task Render(DefinitionDescriptions Element)
Renders Element .
Definition: XmlRenderer.cs:604
XmlRenderer(StringBuilder Output, XmlWriterSettings XmlSettings)
Renders XML from a Markdown document.
Definition: XmlRenderer.cs:48
override Task Render(CommentBlock Element)
Renders Element .
Definition: XmlRenderer.cs:588
override Task Render(InvisibleBreak Element)
Renders Element .
Definition: XmlRenderer.cs:700
override async Task Render(Multimedia Element)
Renders Element .
Definition: XmlRenderer.cs:458
override Task Render(LeftAligned Element)
Renders Element .
Definition: XmlRenderer.cs:710
override Task Render(DefinitionList Element)
Renders Element .
Definition: XmlRenderer.cs:613
override Task Render(DeleteBlocks Element)
Renders Element .
Definition: XmlRenderer.cs:631
override async Task Render(Paragraph Element)
Renders Element .
Definition: XmlRenderer.cs:761
override Task Render(InlineScript Element)
Renders Element .
Definition: XmlRenderer.cs:371
override Task Render(EmojiReference Element)
Renders Element .
Definition: XmlRenderer.cs:263
override Task Render(CodeBlock Element)
Renders Element .
Definition: XmlRenderer.cs:565
override async Task Render(Header Element)
Renders Element .
Definition: XmlRenderer.cs:657
override async Task Render(UnnumberedItem Element)
Renders Element .
Definition: XmlRenderer.cs:918
override Task RenderDocumentHeader()
Renders the document header.
Definition: XmlRenderer.cs:65
readonly XmlWriter xmlOutput
XML output
Definition: XmlRenderer.cs:21
override async Task RenderFootnotes()
Renders footnotes.
Definition: XmlRenderer.cs:100
override Task Render(HtmlBlock Element)
Renders Element .
Definition: XmlRenderer.cs:682
override Task Render(AutomaticLinkUrl Element)
Renders Element .
Definition: XmlRenderer.cs:231
override async Task Render(TaskItem Element)
Renders Element .
Definition: XmlRenderer.cs:897
override Task Render(SectionSeparator Element)
Renders Element .
Definition: XmlRenderer.cs:797
override Task Render(Delete Element)
Renders Element .
Definition: XmlRenderer.cs:244
override Task Render(MetaReference Element)
Renders Element .
Definition: XmlRenderer.cs:445
override Task Render(LineBreak Element)
Renders Element .
Definition: XmlRenderer.cs:405
Helps with common XML-related tasks.
Definition: XML.cs:19
TextAlignment
Text alignment of contents.