LoadOptions Enum
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger inläsningsalternativ vid parsning av XML.
Den här uppräkningen stöder en bitvis kombination av dess medlemsvärden.
public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions =
Public Enum LoadOptions
- Arv
- Attribut
Fält
| Name | Värde | Description |
|---|---|---|
| None | 0 | Bevarar inte obetydligt tomt utrymme eller belastningsbas-URI och linjeinformation. |
| PreserveWhitespace | 1 | Bevarar obetydligt tomt utrymme vid parsning. |
| SetBaseUri | 2 | Begär bas-URI-informationen från XmlReaderoch gör den tillgänglig via egenskapen BaseUri . |
| SetLineInfo | 4 | Begär radinformationen XmlReader från och gör den tillgänglig via egenskaper på XObject. |
Exempel
Det här exemplet läser in ett litet XML-träd från en fil och anger alternativ för att ange bas-URI och behålla radinformation. Det lägger sedan till ett annat element som inte har radinformation. Sedan skrivs radinformationen ut för varje element i trädet.
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
Det här exemplet genererar följande utdata:
BaseUri: Test.xml
Element Name Line Position
------------ ---- --------
Root 1 2
Child1 2 6
Child2 3 6
Child3 No Line Information
Child4 4 6
Kommentarer
Om du bevarar tomt utrymme vid inläsning materialiseras allt obetydligt tomt utrymme i XML-trädet i xml-trädet som det är. Om du inte bevarar tomt utrymme ignoreras allt obetydligt tomt utrymme.
Det finns en prestandaavgift om du ställer in SetBaseUri- och SetLineInfo-flaggorna.
Bas-URI:n och radinformationen är korrekta omedelbart efter att XML-dokumentet har lästs in. Om du ändrar XML-trädet när du har läst in dokumentet kan bas-URI:n och radinformationen bli meningslösa.
Om den underliggande XmlReader filen inte har grundläggande URI eller radinformation har inställningen SetBaseUri och SetLineInfo-flaggorna ingen effekt.
Med den här typen kan du styra hur LINQ till XML hanterar tomt utrymme vid inläsning eller parsning. Mer information finns i Bevara tomt utrymme vid inläsning eller parsning av XML och Bevara tomt utrymme vid serialisering.