This documentation is archived and is not being maintained.

LoadOptions Enumeration

Specifies load options when parsing XML.

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

Namespace:  System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)

public enum LoadOptions

Member nameDescription
Supported by the XNA FrameworkNoneDoes not preserve insignificant white space or load base URI and line information.
Supported by the XNA FrameworkPreserveWhitespacePreserves insignificant white space while parsing.
Supported by the XNA FrameworkSetBaseUriRequests the base URI information from the XmlReader, and makes it available via the BaseUri property.
Supported by the XNA FrameworkSetLineInfoRequests the line information from the XmlReader and makes it available via properties on XObject.

If you preserve white space when loading, all insignificant white space in the XML tree is materialized in the XML tree as is. If you do not preserve white space, then all insignificant white space is discarded.

There is a performance penalty if you set the SetBaseUri and the SetLineInfo flags.

The base URI and the line information are accurate immediately after loading the XML document. If you modify the XML tree after loading the document, the base URI and line information may become meaningless.

If the underlying XmlReader does not have base URI or line information, setting the SetBaseUri and the SetLineInfo flags will have no effect.

This type allows you to control how LINQ to XML handles white space when loading or parsing. For more information, see Preserving White Space while Loading or Parsing XML and Preserving White Space While Serializing.

This example loads a small XML tree from a file, setting the options to set base URI and retain line information. It then adds another element that does not have line information. It then prints the line information for each element in the tree.

string markup = @"<Root>
    <Child1 />
    <Child2 />
    <Child4 />

File.WriteAllText("Test.xml", markup);

XElement po = XElement.Load("Test.xml",
    LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);

// add a node to the tree.
// the newly added node will not have line information.
po.Element("Child2").AddAfterSelf(new XElement("Child3"));

string[] splitUri = po.BaseUri.Split('/');
Console.WriteLine("BaseUri: {0}", splitUri[splitUri.Length - 1]);
    "Element Name".PadRight(20),
foreach (XElement e in po.DescendantsAndSelf())
        ("".PadRight(e.Ancestors().Count() * 2) + e.Name).PadRight(20),
        ((IXmlLineInfo)e).HasLineInfo() ?
            ((IXmlLineInfo)e).LineNumber.ToString().PadRight(5) :
        ((IXmlLineInfo)e).HasLineInfo() ?
            ((IXmlLineInfo)e).LinePosition.ToString() :
            "No Line Information");

This example produces the following output:

BaseUri: Test.xml

Element Name        Line Position
------------        ---- --------
Root                1    2
  Child1            2    6
  Child2            3    6
  Child3            No Line Information
  Child4            4    6

.NET Framework

Supported in: 4, 3.5

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.