LoadOptions Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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.