Click or drag to resize

XmlSaveOptions Class

Represents options for saving to XML format.
Inheritance Hierarchy
SystemObject
  SautinSoft.DocumentSaveOptions
    SautinSoft.DocumentXmlSaveOptions

Namespace: SautinSoft.Document
Assembly: SautinSoft.Document (in SautinSoft.Document.dll) Version: 2025.5.6
Syntax
public sealed class XmlSaveOptions : SaveOptions

The XmlSaveOptions type exposes the following members.

Constructors
 NameDescription
Public methodXmlSaveOptions Initializes a new instance of the XmlSaveOptions class.
Top
Properties
 NameDescription
Public propertyContentType Gets the content-type for XML file format: "application/xml".
(Overrides SaveOptionsContentType)
Public propertyConvertNonTabularDataToSpreadsheet Convert even a textual data to a table. Default value: false.
Public propertyNodeLevel1 Set or get a name for root node. Default value: "document".
Public propertyNodeLevel2 Set or get a name for node with level 2. Default value: "page".
Public propertyNodeLevel3 Set or get a name for node with level 3. Default value: "table".
Public propertyNodeLevel4 Set or get a name for node with level 4. Default value: "row".
Public propertyNodeLevel5 Set or get a name for node with level 5. Default value: "cell".
Public propertyUseRowColSpan Set or get a value indicating of using rowspan and colspan attributes. Default value: true.
Top
Example

See Developer Guide: How to save a document in Xml format

How to save a document in Xml format using C#
using System;
using System.IO;
using System.Xml;
using SautinSoft.Document;
using SautinSoft.Document.Drawing;
using SautinSoft.Document.Tables;

namespace Example
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get your free trial key here:   
            // https://sautinsoft.com/start-for-free/

            SaveToXmlFile();
        }

        /// <summary>
        /// Creates a new document and saves it as Xml file.
        /// </summary>
        /// <remarks>
        /// Details: https://www.sautinsoft.com/products/document/help/net/developer-guide/save-document-as-xml-net-csharp-vb.php
        /// </remarks>
        static void SaveToXmlFile()
        {
            string inpFile = @"..\..\..\example.docx"; 
            string outFile = Path.ChangeExtension(inpFile, ".xml");

            var dc = DocumentCore.Load(inpFile);
            var xml = GetXml(dc);
            xml.Save(outFile);
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(outFile) { UseShellExecute = true });
        }

        private static XmlDocument GetXml(DocumentCore dc)
        {
            var xml = new XmlDocument();
            var body = NewXmlNode(xml, xml, XmlNodeType.Element, "Document");

            foreach (Section section in dc.Sections)
            {
                var sec = NewXmlNode(xml, body, XmlNodeType.Element, "Section");
                WriteBlock(xml, sec, section.Blocks);
            }
            return xml;
        }

        private static void WriteBlock(XmlDocument xml, XmlNode parent, BlockCollection blocks)
        {
            foreach (var block in blocks)
            {
                switch (block)
                {
                    case Paragraph paragraph:
                        if (paragraph.Inlines.Count > 0)
                        {
                            var par = NewXmlNode(xml, parent, XmlNodeType.Element, "Paragraph");
                            foreach (var line in paragraph.Inlines)
                            {
                                switch (line)
                                {
                                    case Run run:
                                        var runNode = NewXmlNode(xml, par, XmlNodeType.Element, "Run");
                                        runNode.InnerText = run.Text;
                                        break;

                                    case ShapeBase shape:
                                        WriteDrawing(xml, par, shape);
                                        break;
                                }
                            }
                        }
                        break;
                    case Table table:
                        WriteTable(xml, parent, table);
                        break;
                }
            }
        }

        private static void WriteDrawing(XmlDocument xml, XmlNode parent, Element item)
        {
            if (item is ShapeGroup)
            {
                var shape = NewXmlNode(xml, parent, XmlNodeType.Element, "ShapeGroup");
                foreach (var sh in (item as ShapeGroup).ChildShapes)
                {
                    WriteDrawing(xml, shape, sh);
                }
            }
            else if (item is Picture)
            {
                var picture = NewXmlNode(xml, parent, XmlNodeType.Element, "Picture");
                var attr = xml.CreateAttribute("name");
                attr.Value = (item as Picture).Description;
                picture.Attributes.Append(attr);
            }
            else
            {
                var shape = NewXmlNode(xml, parent, XmlNodeType.Element, "Shape");
                var attr = xml.CreateAttribute("Figure");
                attr.Value = (item as Shape).Geometry.IsPreset ? ((item as Shape).Geometry as PresetGeometry).Figure.ToString() : "Custom";
                shape.Attributes.Append(attr);
                WriteBlock(xml, shape, (item as Shape).Text.Blocks);
            }
        }

        private static void WriteTable(XmlDocument xml, XmlNode parent, Table table)
        {
            var tab = NewXmlNode(xml, parent, XmlNodeType.Element, "Table");
            XmlAttribute attr = xml.CreateAttribute("rows");
            attr.Value = table.Rows.Count.ToString();
            tab.Attributes.Append(attr);
            attr = xml.CreateAttribute("cols");
            attr.Value = table.Columns.Count.ToString();
            tab.Attributes.Append(attr);
            for (int i = 0; i < table.Rows.Count; i++)
            {
                var row = NewXmlNode(xml, tab, XmlNodeType.Element, "Row");
                for (int j = 0; j < table.Rows[i].Cells.Count; j++)
                {
                    var cell = NewXmlNode(xml, row, XmlNodeType.Element, "Cell");
                    if (table.Rows[i].Cells[j].RowSpan > 1)
                    {
                        attr = xml.CreateAttribute("rowspan");
                        attr.Value = table.Rows[i].Cells[j].RowSpan.ToString();
                        cell.Attributes.Append(attr);
                    }
                    if (table.Rows[i].Cells[j].ColumnSpan > 1)
                    {
                        attr = xml.CreateAttribute("colspan");
                        attr.Value = table.Rows[i].Cells[j].ColumnSpan.ToString();
                        cell.Attributes.Append(attr);
                    }
                    WriteBlock(xml, cell, table.Rows[i].Cells[j].Blocks);
                }
            }
        }

        private static XmlNode NewXmlNode(XmlDocument xml, XmlNode parent, XmlNodeType type, string name)
        {
            XmlNode node = xml.CreateNode(type, name, null);
            parent.AppendChild(node);
            return node;
        }
    }
}
How to save a document in Xml format using VB.Net
Imports System
Imports System.IO
Imports SautinSoft.Document
Imports SautinSoft.Document.Tables

Namespace Example
    Friend Class Program
        Shared Sub Main(ByVal args() As String)
            SaveToXmlFile()
        End Sub
                ''' Get your free trial key here:   
                ''' https://sautinsoft.com/start-for-free/
        ''' <summary>
        ''' Creates a new document and saves it as Xml file.
        ''' </summary>
        ''' <remarks>
        ''' Details: https://www.sautinsoft.com/products/document/help/net/developer-guide/save-document-as-xml-net-csharp-vb.php
        ''' </remarks>
        Private Shared Sub SaveToXmlFile()
            Dim dc As New DocumentCore()
            Dim db As New DocumentBuilder(dc)

            ' Create a new table with preferred width.
            Dim table As Table = db.StartTable()
            db.TableFormat.PreferredWidth = New TableWidth(LengthUnitConverter.Convert(5, LengthUnit.Inch, LengthUnit.Point), TableWidthUnit.Point)

            ' Specify formatting of cells and alignment.
            db.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Single, Color.Green, 1)
            db.CellFormat.VerticalAlignment = VerticalAlignment.Top
            db.ParagraphFormat.Alignment = HorizontalAlignment.Center

            ' Specify height of rows and write text.
            db.RowFormat.Height = New TableRowHeight(105F, HeightRule.Exact)
            db.InsertCell()
            db.Write("This is Row 1 Cell 1")
            db.InsertCell()
            db.Write("This is Row 1 Cell 2")
            db.InsertCell()
            db.Write("This is Row 1 Cell 3")
            db.EndRow()

            ' Specify formatting of cells and alignment.
            db.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Single, Color.Black, 1)
            db.CellFormat.VerticalAlignment = VerticalAlignment.Center
            db.ParagraphFormat.Alignment = HorizontalAlignment.Left

            ' Specify height of rows and write text.
            db.RowFormat.Height = New TableRowHeight(150F, HeightRule.Exact)
            db.InsertCell()
            db.Write("This is Row 2 Cell 1")
            db.InsertCell()
            db.Write("This is Row 2 Cell 2")
            db.InsertCell()
            db.Write("This is Row 2 Cell 3")
            db.EndRow()

            ' Specify formatting of cells and alignment.
            db.CellFormat.Borders.SetBorders(MultipleBorderTypes.Outside, BorderStyle.Single, Color.Orange, 1)
            db.CellFormat.VerticalAlignment = VerticalAlignment.Bottom
            db.ParagraphFormat.Alignment = HorizontalAlignment.Right

            ' Specify height of rows and write text
            db.RowFormat.Height = New TableRowHeight(125F, HeightRule.Exact)
            db.InsertCell()
            db.Write("This is Row 3 Cell 1")
            db.InsertCell()
            db.Write("This is Row 3 Cell 2")
            db.InsertCell()
            db.Write("This is Row 3 Cell 3")
            db.EndRow()
            db.EndTable()

            ' Save our document into XML format.
            Dim filePath As String = "Result.xml"
            dc.Save(filePath)

            ' Open the result for demonstration purposes.
            System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(filePath) With {.UseShellExecute = True})
        End Sub
    End Class
End Namespace
See Also