Comparteix a través de


LoadOptions Enumeración

Definición

Especifica las opciones de carga al analizar XML.

Esta enumeración admite una combinación bit a bit de sus valores de miembro.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Herencia
LoadOptions
Atributos

Campos

None 0

No conserva espacio en blanco no significativo ni carga información de URI base y de línea.

PreserveWhitespace 1

Conserva espacio en blanco no significativo durante el análisis.

SetBaseUri 2

Solicita la información de URI base del XmlReader y la pone disponible a través de la propiedad BaseUri.

SetLineInfo 4

Solicita la información de línea del XmlReader y la pone disponible a través de propiedades en XObject.

Ejemplos

En este ejemplo se carga un árbol XML pequeño de un archivo, estableciendo las opciones para establecer el URI base y conservar la información de línea. A continuación, agrega otro elemento que no tiene información de línea. A continuación, imprime la información de línea de cada elemento del árbol.

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

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]);  
Console.WriteLine();  
Console.WriteLine("{0}{1}{2}",  
    "Element Name".PadRight(20),  
    "Line".PadRight(5),  
    "Position");  
Console.WriteLine("{0}{1}{2}",  
    "------------".PadRight(20),  
    "----".PadRight(5),  
    "--------");  
foreach (XElement e in po.DescendantsAndSelf())  
    Console.WriteLine("{0}{1}{2}",  
        ("".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");  
Dim markup As String = _  
    "<Root>" + Environment.NewLine & _  
    "    <Child1 />" + Environment.NewLine & _  
    "    <Child2 />" + Environment.NewLine & _  
    "    <Child4 />" + Environment.NewLine & _  
    "</Root>"  

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

Dim po As XElement = XElement.Load("Test.xml", LoadOptions.SetBaseUri Or LoadOptions.SetLineInfo)  

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

Dim splitUri() As String = po.BaseUri.Split("/"c)  
Console.WriteLine("BaseUri: {0}", splitUri(splitUri.Length - 1))  
Console.WriteLine()  
Console.WriteLine("{0}{1}{2}", _  
    "Element Name".PadRight(20), _  
    "Line".PadRight(5), _  
    "Position")  
Console.WriteLine("{0}{1}{2}", _  
    "------------".PadRight(20), _  
    "----".PadRight(5), _  
    "--------")  
For Each e As XElement In po.DescendantsAndSelf()  
    Console.WriteLine("{0}{1}{2}", _  
        ("".PadRight(e.Ancestors().Count() * 2) & e.Name.ToString).PadRight(20), _  
        IIf(DirectCast(e, IXmlLineInfo).HasLineInfo(), _  
            DirectCast(e, IXmlLineInfo).LineNumber.ToString().PadRight(5), _  
            ""), _  
        IIf(DirectCast(e, IXmlLineInfo).HasLineInfo(), _  
            DirectCast(e, IXmlLineInfo).LinePosition.ToString(), _  
            "No Line Information"))  
Next  

Este ejemplo produce el siguiente resultado:

BaseUri: Test.xml  

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

Comentarios

Si conserva el espacio en blanco al cargarse, todos los espacios en blanco insignificantes del árbol XML se materializan en el árbol XML tal cual. Si no conserva el espacio en blanco, se descartan todos los espacios en blanco insignificantes.

Hay una penalización de rendimiento si establece las marcas SetBaseUri y SetLineInfo.

El URI base y la información de línea son precisos inmediatamente después de cargar el documento XML. Si modifica el árbol XML después de cargar el documento, el URI base y la información de línea pueden no tener sentido.

Si el subyacente XmlReader no tiene información de línea o URI base, establecer setBaseUri y las marcas SetLineInfo no tendrán ningún efecto.

Este tipo permite controlar cómo LINQ to XML controla el espacio en blanco al cargar o analizar. Para obtener más información, vea Conservar el espacio en blanco al cargar o analizar XML y Conservar el espacio en blanco durante la serialización.

Se aplica a

Consulte también