LoadOptions Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje možnosti načtení při analýze XML.
Tento výčet podporuje bitové kombinace hodnot jeho členů.
public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions =
Public Enum LoadOptions
- Dědičnost
- Atributy
Pole
None | 0 | Nezachová nevýznamné prázdné znaky ani základní identifikátor URI a řádkové informace. |
PreserveWhitespace | 1 | Zachovává nevýznamné prázdné znaky při analýze. |
SetBaseUri | 2 | Vyžádá si základní informace identifikátoru URI z objektu XmlReadera zpřístupní je prostřednictvím BaseUri vlastnosti. |
SetLineInfo | 4 | Požádá o informace z XmlReader řádku a zpřístupní je prostřednictvím vlastností na XObject. |
Příklady
Tento příklad načte z souboru malý strom XML a nastaví možnosti pro nastavení základního identifikátoru URI a zachování informací o řádku. Pak přidá další prvek, který neobsahuje informace o řádcích. Potom vytiskne informace o řádcích pro každý prvek ve stromu.
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
Tento příklad vytvoří následující výstup:
BaseUri: Test.xml
Element Name Line Position
------------ ---- --------
Root 1 2
Child1 2 6
Child2 3 6
Child3 No Line Information
Child4 4 6
Poznámky
Pokud při načítání zachováte prázdné znaky, všechny nevýznamné prázdné znaky ve stromu XML jsou materializovány ve stromu XML tak, jak je. Pokud nezachováte prázdné znaky, všechny nevýznamné prázdné znaky se zahodí.
Pokud nastavíte SetBaseUri a příznaky SetLineInfo, dojde k penalizaci výkonu.
Základní identifikátor URI a informace o řádku jsou přesné okamžitě po načtení dokumentu XML. Pokud upravíte strom XML po načtení dokumentu, základní identifikátor URI a řádkové informace mohou být nesmyslné.
Pokud podkladové XmlReader informace nemají základní identifikátor URI ani řádkové informace, nastavení SetBaseUri a příznaky SetLineInfo nebudou mít žádný vliv.
Tento typ umožňuje řídit, jak LINQ to XML zpracovává prázdné znaky při načítání nebo analýze. Další informace najdete v tématu Zachování prázdného místa při načítání nebo analýze XML a zachování prázdného místa při serializaci.