Udostępnij za pośrednictwem


LoadOptions Wyliczenie

Definicja

Określa opcje ładowania podczas analizowania kodu XML.

To wyliczenie obsługuje bitową kombinację jego wartości składowych.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Dziedziczenie
LoadOptions
Atrybuty

Pola

None 0

Nie zachowuje nieistotnego odstępu ani nie ładuje podstawowego identyfikatora URI i informacji o wierszu.

PreserveWhitespace 1

Zachowuje nieistotne białe znaki podczas analizowania.

SetBaseUri 2

Żąda podstawowych informacji o identyfikatorze XmlReaderURI z obiektu i udostępnia je za pośrednictwem BaseUri właściwości .

SetLineInfo 4

Żąda informacji o wierszu z obiektu XmlReader i udostępnia je za pośrednictwem właściwości w pliku XObject.

Przykłady

W tym przykładzie ładuje małe drzewo XML z pliku, ustawiając opcje ustawiania podstawowego identyfikatora URI i zachowywania informacji o wierszu. Następnie dodaje kolejny element, który nie zawiera informacji o wierszu. Następnie wyświetla informacje o wierszu dla każdego elementu w drzewie.

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  

Ten przykład generuje następujące wyniki:

BaseUri: Test.xml  

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

Uwagi

Jeśli podczas ładowania zachowasz białe miejsce, całe nieistotne białe miejsce w drzewie XML zostanie zmaterializowane w drzewie XML, tak jak to jest. Jeśli nie zachowasz białych znaków, wszystkie nieistotne białe znaki zostaną odrzucone.

Jeśli ustawisz flagę SetBaseUri i SetLineInfo, zostanie wyświetlona kara wydajności.

Podstawowy identyfikator URI i informacje o wierszu są dokładne natychmiast po załadowaniu dokumentu XML. Jeśli po załadowaniu dokumentu zmodyfikujesz drzewo XML, podstawowy identyfikator URI i informacje o wierszu mogą stać się bez znaczenia.

Jeśli baza bazowa XmlReader nie ma podstawowych informacji o identyfikatorze URI lub wierszu, ustawienie wartości SetBaseUri i flag SetLineInfo nie będzie miało żadnego wpływu.

Ten typ pozwala kontrolować, jak LINQ to XML obsługuje białe miejsce podczas ładowania lub analizowania. Aby uzyskać więcej informacji, zobacz Zachowywanie białych znaków podczas ładowania lub analizowania kodu XML i Zachowywanie białych znaków podczas serializacji.

Dotyczy

Zobacz też