LoadOptions Enumeração

Definição

Especifica as opções de carga durante a análise de XML.Specifies load options when parsing XML.

Esta enumeração tem um atributo FlagsAttribute que permite uma combinação bit a bit dos valores membros dela.

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

Campos

None 0

Não preserva espaço em branco insignificante ou carrega o URI de base e as informações de linha.Does not preserve insignificant white space or load base URI and line information.

PreserveWhitespace 1

Preserva todo espaço em branco insignificante durante a análise.Preserves insignificant white space while parsing.

SetBaseUri 2

Solicita as informações de URI de base do XmlReader e disponibiliza por meio da propriedade BaseUri.Requests the base URI information from the XmlReader, and makes it available via the BaseUri property.

SetLineInfo 4

Solicita as informações de linha do XmlReader e disponibiliza por meio das propriedades em XObject.Requests the line information from the XmlReader and makes it available via properties on XObject.

Exemplos

Este exemplo carrega uma pequena árvore XML de um arquivo, definindo as opções para definir o URI de base e manter as informações da linha.This example loads a small XML tree from a file, setting the options to set base URI and retain line information. Em seguida, ele adiciona outro elemento que não tem informações de linha.It then adds another element that does not have line information. Em seguida, ele imprime as informações de linha de cada elemento na árvore.It then prints the line information for each element in the tree.

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  

Esse exemplo gera a saída a seguir: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  

Comentários

Se você preservar o espaço em branco ao carregar, todo o espaço em branco insignificante na árvore XML será materializado na árvore XML como está.If you preserve white space when loading, all insignificant white space in the XML tree is materialized in the XML tree as is. Se você não preservar o espaço em branco, todos os espaços em branco insignificantes serão descartados.If you do not preserve white space, then all insignificant white space is discarded.

Haverá uma penalidade de desempenho se você definir os sinalizadores SetBaseUri e SetLineInfo.There is a performance penalty if you set the SetBaseUri and the SetLineInfo flags.

O URI de base e as informações de linha são precisos imediatamente após o carregamento do documento XML.The base URI and the line information are accurate immediately after loading the XML document. Se você modificar a árvore XML depois de carregar o documento, o URI de base e as informações de linha poderão se tornar sem sentido.If you modify the XML tree after loading the document, the base URI and line information may become meaningless.

Se o subjacente não XmlReader tiver informações de linha ou URI de base, definir os sinalizadores SetBaseUri e SetLineInfo não terá nenhum efeito.If the underlying XmlReader does not have base URI or line information, setting the SetBaseUri and the SetLineInfo flags will have no effect.

Esse tipo permite controlar como o LINQ to XML lida com o espaço em branco ao carregar ou analisar.This type allows you to control how LINQ to XML handles white space when loading or parsing. Para obter mais informações, consulte Preservar espaço em branco ao carregar ou analisar XML e preservar o espaço em branco durante a serialização.For more information, see Preserve white space while loading or parsing XML and Preserve white space while serializing.

Aplica-se a

Confira também