LoadOptions Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt Ladeoptionen beim Analysieren von XML an.
Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.
public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions =
Public Enum LoadOptions
- Vererbung
- Attribute
Felder
None | 0 | Behält keinen nicht signifikanten Leerraum bei und lädt keine Basis-URI und Zeileninformationen. |
PreserveWhitespace | 1 | Behält beim Analysieren nicht signifikanten Leerraum bei. |
SetBaseUri | 2 | Fordert die Basis-URI-Informationen vom XmlReader an und macht sie über die BaseUri-Eigenschaft verfügbar. |
SetLineInfo | 4 | Fordert die Zeileninformationen vom XmlReader an und macht sie über Eigenschaften von XObject verfügbar. |
Beispiele
In diesem Beispiel wird eine kleine XML-Struktur aus einer Datei geladen, indem Sie die Optionen festlegen, um Basis-URI festzulegen und Zeileninformationen beizubehalten. Anschließend wird ein weiteres Element hinzugefügt, das keine Zeileninformationen enthält. Anschließend werden die Zeileninformationen für jedes Element in der Struktur gedruckt.
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
Dieses Beispiel erzeugt die folgende Ausgabe:
BaseUri: Test.xml
Element Name Line Position
------------ ---- --------
Root 1 2
Child1 2 6
Child2 3 6
Child3 No Line Information
Child4 4 6
Hinweise
Wenn Sie beim Laden Leerraum beibehalten, werden alle unbedeutenden Leerzeichen in der XML-Struktur wie in der XML-Struktur materialisiert. Wenn Sie keinen Leerraum erhalten, wird der gesamte unbedeutende Leerraum verworfen.
Es gibt eine Leistungsstrafe, wenn Sie den SetBaseUri und die SetLineInfo-Flags festlegen.
Der Basis-URI und die Zeileninformationen sind unmittelbar nach dem Laden des XML-Dokuments genau. Wenn Sie die XML-Struktur nach dem Laden des Dokuments ändern, kann der Basis-URI und die Zeileninformationen bedeutungslos werden.
Wenn der zugrunde liegende Basis-URI XmlReader oder keine Zeileninformationen enthält, hat das Festlegen des SetBaseUri und die SetLineInfo-Flags keine Auswirkung.
Mit diesem Typ können Sie steuern, wie LINQ to XML Leerraum beim Laden oder Analysieren behandelt. Weitere Informationen finden Sie unter Beibehalten des Leerraums beim Laden oder Analysieren von XML und Beibehalten von Leerzeichen beim Serialisieren.