LoadOptions Enumerazione

Definizione

Specifica le opzioni di caricamento durante l'analisi di XML.

Questa enumerazione supporta una combinazione bit per bit dei rispettivi valori dei membri.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Ereditarietà
LoadOptions
Attributi

Campi

None 0

Non conserva spazio vuoto non significativo né carica URI di base e informazioni sulla riga.

PreserveWhitespace 1

Conserva spazio vuoto non significativo durante l'analisi.

SetBaseUri 2

Richiede le informazioni sull'URI di base da XmlReader e le rende disponibili tramite la proprietà BaseUri.

SetLineInfo 4

Richiede le informazioni sulla riga da XmlReader e le rende disponibili tramite la proprietà XObject.

Esempio

In questo esempio viene caricato un piccolo albero XML da un file, impostando le opzioni per impostare l'URI di base e conservare le informazioni sulla riga. Aggiunge quindi un altro elemento che non dispone di informazioni sulla riga. Stampa quindi le informazioni sulla riga per ogni elemento nell'albero.

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  

Nell'esempio viene prodotto l'output seguente:

BaseUri: Test.xml  

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

Commenti

Se si mantiene lo spazio vuoto durante il caricamento, tutti gli spazi vuoti insignificanti nell'albero XML vengono materializzati nell'albero XML come è. Se non si mantiene lo spazio vuoto, tutti gli spazi vuoti insignificanti vengono eliminati.

Si verifica una penalità delle prestazioni se si imposta SetBaseUri e i flag SetLineInfo.

L'URI di base e le informazioni sulla riga sono accurate immediatamente dopo il caricamento del documento XML. Se si modifica l'albero XML dopo il caricamento del documento, l'URI di base e le informazioni sulla riga potrebbero diventare senza significato.

Se l'URI o le informazioni sulla riga sottostanti XmlReader non hanno alcun effetto, l'impostazione di SetBaseUri e i flag SetLineInfo non avranno alcun effetto.

Questo tipo consente di controllare come LINQ to XML gestisce lo spazio vuoto durante il caricamento o l'analisi. Per altre informazioni, vedere Mantenere lo spazio vuoto durante il caricamento o l'analisi di XML e La conservazione dello spazio vuoto durante la serializzazione.

Si applica a

Vedi anche