LoadOptions Enum
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee geeft u laadopties bij het parseren van XML.
Deze opsomming ondersteunt een bitsgewijze combinatie van de waarden van de leden.
public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions =
Public Enum LoadOptions
- Overname
- Kenmerken
Velden
| Name | Waarde | Description |
|---|---|---|
| None | 0 | Behoudt geen onbelangrijke witruimte of laadbasis-URI en regelinformatie. |
| PreserveWhitespace | 1 | Behoudt onbelangrijke witruimte tijdens het parseren. |
| SetBaseUri | 2 | Vraagt de basis-URI-informatie van de XmlReaderen maakt deze beschikbaar via de BaseUri eigenschap. |
| SetLineInfo | 4 | Vraagt de regelinformatie van de XmlReader regel aan en maakt deze beschikbaar via eigenschappen op XObject. |
Voorbeelden
In dit voorbeeld wordt een kleine XML-structuur uit een bestand geladen, waarbij u de opties instelt om basis-URI in te stellen en regelgegevens te behouden. Vervolgens wordt een ander element toegevoegd dat geen regelgegevens bevat. Vervolgens worden de lijngegevens voor elk element in de structuur afgedrukt.
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
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
BaseUri: Test.xml
Element Name Line Position
------------ ---- --------
Root 1 2
Child1 2 6
Child2 3 6
Child3 No Line Information
Child4 4 6
Opmerkingen
Als u witruimte behoudt tijdens het laden, wordt alle onbelangrijke witruimte in de XML-structuur in de XML-structuur gerealiseerd zoals dat is. Als u geen witruimte behoudt, wordt alle onbelangrijke witruimte verwijderd.
Er is een prestatiestraf als u de SetBaseUri- en SetLineInfo-vlaggen instelt.
De basis-URI en de regelinformatie zijn direct na het laden van het XML-document nauwkeurig. Als u de XML-structuur wijzigt na het laden van het document, kunnen de basis-URI en regelinformatie betekenisloos worden.
Als de onderliggende XmlReader gegevens niet over basis-URI of regelgegevens beschikken, heeft het instellen van de SetBaseUri en de Vlagen SetLineInfo geen effect.
Met dit type kunt u bepalen hoe LINQ naar XML witruimte verwerkt bij het laden of parseren. Zie Witruimte behouden tijdens het laden of parseren van XML en Witruimte behouden tijdens het serialiseren van witruimte voor meer informatie.