LoadOptions Enumeration

Definition

Gibt Ladeoptionen beim Analysieren von XML an.

Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Vererbung
LoadOptions
Attribute

Felder

Name Wert Beschreibung
None 0

Behält keinen unbedeutenden Leerraum bei oder lädt Basis-URI und Zeileninformationen.

PreserveWhitespace 1

Behält bei der Analyse unbedeutende Leerzeichen bei.

SetBaseUri 2

Fordert die Basis-URI-Informationen von der XmlReaderEigenschaft an und stellt sie über die BaseUri Eigenschaft zur Verfügung.

SetLineInfo 4

Fordert die Zeileninformationen von der XmlReader und stellt sie über Eigenschaften zur XObjectVerfügung.

Beispiele

In diesem Beispiel wird eine kleine XML-Struktur aus einer Datei geladen, die Optionen zum Festlegen des Basis-URI und zum Aufbewahren von Zeileninformationen festgelegt. Anschließend wird ein weiteres Element hinzugefügt, das keine Zeileninformationen enthält. Anschließend werden die Zeileninformationen für jedes Element in der Struktur gedruckt.

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  

Dieses Beispiel erzeugt die folgende Ausgabe:

BaseUri: Test.xml  

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

Hinweise

Wenn Sie beim Laden Leerraum beibehalten, werden alle unbedeutenden Leerzeichen in der XML-Struktur wie in der XML-Struktur materialisiert. Wenn Sie keinen Leerraum beibehalten, werden alle unbedeutenden Leerzeichen verworfen.

Wenn Sie "SetBaseUri" und die SetLineInfo-Flags festlegen, gibt es eine Leistungseinbuße.

Der Basis-URI und die Zeileninformationen sind unmittelbar nach dem Laden des XML-Dokuments genau. Wenn Sie die XML-Struktur nach dem Laden des Dokuments ändern, können die Basis-URI und Zeileninformationen bedeutungslos werden.

Wenn der zugrunde liegende XmlReader Basis-URI oder keine Basiszeileninformationen enthält, hat das Festlegen von SetBaseUri und die SetLineInfo-Flags keine Auswirkung.

Mit diesem Typ können Sie steuern, wie LINQ to XML beim Laden oder Analysieren Leerraum behandelt. Weitere Informationen finden Sie unter Beibehalten des Leerraums beim Laden oder Analysieren von XML und Beibehalten von Leerzeichen beim Serialisieren.

Gilt für:

Weitere Informationen