LoadOptions Wyliczenie

Definicja

Określa opcje ładowania podczas analizowania kodu XML.Specifies load options when parsing XML.

To wyliczenie ma atrybut FlagsAttribute zezwalający na bitową kombinację jego wartości składowych.

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

Pola

None 0

Nie zachowuje znaczących białych znaków ani nie Ładuj podstawowych informacji o identyfikatorze URI i linii.Does not preserve insignificant white space or load base URI and line information.

PreserveWhitespace 1

Zachowuje nieznaczny biały znak podczas analizowania.Preserves insignificant white space while parsing.

SetBaseUri 2

Żąda podstawowych informacji o identyfikatorze URI XmlReaderz i udostępnia je BaseUri za pośrednictwem właściwości.Requests the base URI information from the XmlReader, and makes it available via the BaseUri property.

SetLineInfo 4

Żąda informacji o wierszu od XmlReader i udostępnia je za pośrednictwem właściwości w. XObjectRequests the line information from the XmlReader and makes it available via properties on XObject.

Przykłady

Ten przykład ładuje małe drzewo XML z pliku, ustawiając opcje, aby ustawić podstawowy identyfikator URI i zachować informacje o wierszu.This example loads a small XML tree from a file, setting the options to set base URI and retain line information. Następnie dodaje kolejny element, który nie zawiera informacji o wierszu.It then adds another element that does not have line information. Następnie drukuje informacje o wierszach dla każdego elementu w drzewie.It then prints the line information for each element in the tree.

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:This example produces the following output:

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 zachowywane jest białe miejsce, wszystkie nieznaczące białe znaki w drzewie XML są materiałowe w drzewie XML w postaci, w jakiej jest.If you preserve white space when loading, all insignificant white space in the XML tree is materialized in the XML tree as is. Jeśli nie zachowasz odstępu, oznacza to, że wszystkie nieznaczące białe znaki są odrzucane.If you do not preserve white space, then all insignificant white space is discarded.

Jeśli ustawisz flagi SetBaseUri i SetLineInfo, nastąpi spadek wydajności.There is a performance penalty if you set the SetBaseUri and the SetLineInfo flags.

Podstawowy identyfikator URI i informacje o wierszu są dokładne natychmiast po załadowaniu dokumentu XML.The base URI and the line information are accurate immediately after loading the XML document. Jeśli zmodyfikujesz drzewo XML po załadowaniu dokumentu, podstawowy identyfikator URI i informacje o wierszu mogą stać się bezużyteczne.If you modify the XML tree after loading the document, the base URI and line information may become meaningless.

Jeśli podstawą XmlReader nie są podstawowe informacje o identyfikatorze URI lub wierszu, ustawienie SetBaseUri i flagi SetLineInfo nie będą miały żadnego efektu.If the underlying XmlReader does not have base URI or line information, setting the SetBaseUri and the SetLineInfo flags will have no effect.

Ten typ pozwala kontrolować sposób, w jaki LINQ to XML obsługuje biały znak podczas ładowania lub analizowania.This type allows you to control how LINQ to XML handles white space when loading or parsing. Aby uzyskać więcej informacji, zobacz zachowywanie białych znaków podczas ładowania lub analizowania kodu XML oraz zachowywania białych znaków podczas serializacji.For more information, see Preserving White Space while Loading or Parsing XML and Preserving White Space While Serializing.

Dotyczy

Zobacz też