Sdílet prostřednictvím


LoadOptions Výčet

Definice

Určuje možnosti načtení při analýze XML.

Tento výčet podporuje bitové kombinace hodnot jeho členů.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Dědičnost
LoadOptions
Atributy

Pole

None 0

Nezachová nevýznamné prázdné znaky ani základní identifikátor URI a řádkové informace.

PreserveWhitespace 1

Zachovává nevýznamné prázdné znaky při analýze.

SetBaseUri 2

Vyžádá si základní informace identifikátoru URI z objektu XmlReadera zpřístupní je prostřednictvím BaseUri vlastnosti.

SetLineInfo 4

Požádá o informace z XmlReader řádku a zpřístupní je prostřednictvím vlastností na XObject.

Příklady

Tento příklad načte z souboru malý strom XML a nastaví možnosti pro nastavení základního identifikátoru URI a zachování informací o řádku. Pak přidá další prvek, který neobsahuje informace o řádcích. Potom vytiskne informace o řádcích pro každý prvek ve stromu.

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  

Tento příklad vytvoří následující výstup:

BaseUri: Test.xml  

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

Poznámky

Pokud při načítání zachováte prázdné znaky, všechny nevýznamné prázdné znaky ve stromu XML jsou materializovány ve stromu XML tak, jak je. Pokud nezachováte prázdné znaky, všechny nevýznamné prázdné znaky se zahodí.

Pokud nastavíte SetBaseUri a příznaky SetLineInfo, dojde k penalizaci výkonu.

Základní identifikátor URI a informace o řádku jsou přesné okamžitě po načtení dokumentu XML. Pokud upravíte strom XML po načtení dokumentu, základní identifikátor URI a řádkové informace mohou být nesmyslné.

Pokud podkladové XmlReader informace nemají základní identifikátor URI ani řádkové informace, nastavení SetBaseUri a příznaky SetLineInfo nebudou mít žádný vliv.

Tento typ umožňuje řídit, jak LINQ to XML zpracovává prázdné znaky při načítání nebo analýze. Další informace najdete v tématu Zachování prázdného místa při načítání nebo analýze XML a zachování prázdného místa při serializaci.

Platí pro

Viz také