LoadOptions Enum

Definitie

Hiermee geeft u laadopties bij het parseren van XML.

Deze opsomming ondersteunt een bitsgewijze combinatie van de waarden van de leden.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Overname
LoadOptions
Kenmerken

Velden

Name Waarde Description
None 0

Behoudt geen onbelangrijke witruimte of laadbasis-URI en regelinformatie.

PreserveWhitespace 1

Behoudt onbelangrijke witruimte tijdens het parseren.

SetBaseUri 2

Vraagt de basis-URI-informatie van de XmlReaderen maakt deze beschikbaar via de BaseUri eigenschap.

SetLineInfo 4

Vraagt de regelinformatie van de XmlReader regel aan en maakt deze beschikbaar via eigenschappen op XObject.

Voorbeelden

In dit voorbeeld wordt een kleine XML-structuur uit een bestand geladen, waarbij u de opties instelt om basis-URI in te stellen en regelgegevens te behouden. Vervolgens wordt een ander element toegevoegd dat geen regelgegevens bevat. Vervolgens worden de lijngegevens voor elk element in de structuur afgedrukt.

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  

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

BaseUri: Test.xml  

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

Opmerkingen

Als u witruimte behoudt tijdens het laden, wordt alle onbelangrijke witruimte in de XML-structuur in de XML-structuur gerealiseerd zoals dat is. Als u geen witruimte behoudt, wordt alle onbelangrijke witruimte verwijderd.

Er is een prestatiestraf als u de SetBaseUri- en SetLineInfo-vlaggen instelt.

De basis-URI en de regelinformatie zijn direct na het laden van het XML-document nauwkeurig. Als u de XML-structuur wijzigt na het laden van het document, kunnen de basis-URI en regelinformatie betekenisloos worden.

Als de onderliggende XmlReader gegevens niet over basis-URI of regelgegevens beschikken, heeft het instellen van de SetBaseUri en de Vlagen SetLineInfo geen effect.

Met dit type kunt u bepalen hoe LINQ naar XML witruimte verwerkt bij het laden of parseren. Zie Witruimte behouden tijdens het laden of parseren van XML en Witruimte behouden tijdens het serialiseren van witruimte voor meer informatie.

Van toepassing op

Zie ook