LoadOptions Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica as opções de carga durante a análise de XML.
Essa enumeração dá suporte a uma combinação bit a bit dos valores de membro.
public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions =
Public Enum LoadOptions
- Herança
- Atributos
Campos
None | 0 | Não preserva espaço em branco insignificante ou carrega o URI de base e as informações de linha. |
PreserveWhitespace | 1 | Preserva todo espaço em branco insignificante durante a análise. |
SetBaseUri | 2 | Solicita as informações de URI de base do XmlReader e disponibiliza por meio da propriedade BaseUri. |
SetLineInfo | 4 | Solicita as informações de linha do XmlReader e disponibiliza por meio das propriedades em XObject. |
Exemplos
Este exemplo carrega uma árvore XML pequena de um arquivo, definindo as opções para definir o URI base e reter informações de linha. Em seguida, ele adiciona outro elemento que não tem informações de linha. Em seguida, ele imprime as informações de linha para cada elemento na árvore.
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:
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á. Se você não preservar o espaço em branco, todo o espaço em branco insignificante será descartado.
Haverá uma penalidade de desempenho se você definir o SetBaseUri e os sinalizadores SetLineInfo.
O URI base e as informações de linha são precisos imediatamente após o carregamento do documento XML. Se você modificar a árvore XML depois de carregar o documento, o URI base e as informações de linha poderão se tornar sem sentido.
Se o subjacente XmlReader não tiver informações de linha ou URI base, a configuração dos sinalizadores SetBaseUri e SetLineInfo não terá efeito.
Esse tipo permite que você controle como LINQ to XML lida com o espaço em branco ao carregar ou analisar. 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.