LoadOptions Énumération

Définition

Spécifie les options de chargement lors de 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

Nom Valeur Description
None 0

Ne conserve pas d’espace blanc non négligeable ou ne charge pas les informations d’URI de base et de ligne.

PreserveWhitespace 1

Conserve un espace blanc non significatif lors de l’analyse.

SetBaseUri 2

Demande les informations d’URI de base à partir de la XmlReaderpropriété et les rend disponibles via la BaseUri propriété.

SetLineInfo 4

Demande les informations de ligne à partir de la XmlReader ligne 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 dans l’arborescence XML sont matérialisés dans l’arborescence XML tel quel. Si vous ne conservez pas d’espace blanc, tous les espaces blancs non significatifs sont ignorés.

Une pénalité de performances est appliquée si vous définissez les indicateurs SetBaseUri et SetLineInfo.

L’URI de base et les informations de ligne sont exacts 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 des indicateurs SetBaseUri et SetLineInfo n’a 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 xml et conserver l’espace blanc lors de la sérialisation.

S’applique à

Voir aussi