LoadOptions Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Especifica opções de carregamento ao analisar XML.
Esta enumeração suporta uma combinação bit-a-bit dos respetivos valores membro.
public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions =
Public Enum LoadOptions
- Herança
- Atributos
Campos
| Name | Valor | Description |
|---|---|---|
| None | 0 | Não preserva espaço em branco insignificante nem informações de URI e linhas da base de carga. |
| PreserveWhitespace | 1 | Preserva um espaço em branco insignificante durante a análise sintática. |
| SetBaseUri | 2 | Solicita a informação base do URI do XmlReader, e torna-a disponível através da BaseUri propriedade. |
| SetLineInfo | 4 | Solicita a informação da linha a XmlReader e torna-a disponível através das propriedades em XObject. |
Exemplos
Este exemplo carrega uma pequena árvore XML a partir de um ficheiro, definindo as opções para definir o URI base e manter a informação da linha. Depois adiciona outro elemento que não tem informação de linha. Depois, imprime a informação da linha para cada elemento da á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
Este exemplo produz a seguinte saída:
BaseUri: Test.xml
Element Name Line Position
------------ ---- --------
Root 1 2
Child1 2 6
Child2 3 6
Child3 No Line Information
Child4 4 6
Observações
Se preservar espaço em branco durante o carregamento, todo o espaço em branco insignificante na árvore XML materializa-se na árvore XML tal como está. Se não preservar o espaço em branco, então todo o espaço em branco insignificante é descartado.
Há uma penalização de desempenho se definires os flags SetBaseUri e SetLineInfo.
O URI base e a informação da linha são precisos imediatamente após o carregamento do documento XML. Se modificar a árvore XML após carregar o documento, o URI base e a informação da linha podem tornar-se sem sentido.
Se o subjacente XmlReader não tiver URI base ou informação de linha, definir os flags SetBaseUri e SetLineInfo não terá efeito.
Este tipo permite-lhe controlar como o LINQ para XML gere o espaço em branco ao carregar ou analisar. Para mais informações, consulte Preservar espaço em branco ao carregar ou analisar XML e Preservar espaço em branco durante a serialização.