Partager via


LoadOptions Énumération

Définition

Spécifie les options de chargement à utiliser pendant l'analyse XML.

Cette énumération prend en charge une combinaison au niveau du bit de ses valeurs membres.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Héritage
LoadOptions
Attributs

Champs

None 0

Ne conserve pas les espaces blancs non significatifs ou ne charge pas l'URI de base et les informations de ligne.

PreserveWhitespace 1

Conserve les espaces blancs non significatifs lors de l'analyse.

SetBaseUri 2

Demande les informations d'URI de base au XmlReader, et les rend disponibles via la propriété BaseUri.

SetLineInfo 4

Demande les informations de ligne au XmlReader, et les rend disponibles via des propriétés sur XObject.

Exemples

Cet exemple charge une petite arborescence XML à partir d’un fichier, en définissant les options pour définir l’URI de base et conserver les informations de ligne. Il ajoute ensuite un autre élément qui n’a pas d’informations de ligne. Il imprime ensuite les informations de ligne pour chaque élément de l’arborescence.

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  

Cet exemple produit la sortie suivante :

BaseUri: Test.xml  

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

Remarques

Si vous conservez de l’espace blanc lors du chargement, tous les espaces blancs non significatifs de l’arborescence XML sont matérialisés dans l’arborescence XML tel quel. Si vous ne conservez pas l’espace blanc, tous les espaces blancs non significatifs sont ignorés.

Il existe une pénalité de performances si vous définissez les indicateurs SetBaseUri et SetLineInfo.

L’URI de base et les informations de ligne sont exactes immédiatement après le chargement du document XML. Si vous modifiez l’arborescence XML après le chargement du document, l’URI de base et les informations de ligne peuvent devenir sans signification.

Si l’URI de base ou les informations de ligne ne sont pas sous-jacents XmlReader , la définition de SetBaseUri et les indicateurs SetLineInfo n’ont aucun effet.

Ce type vous permet de contrôler comment LINQ to XML gère l’espace blanc lors du chargement ou de l’analyse. Pour plus d’informations, consultez Conserver l’espace blanc lors du chargement ou de l’analyse du code XML et conserver l’espace blanc lors de la sérialisation.

S’applique à

Voir aussi