LoadOptions Enumerazione
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica le opzioni di caricamento durante l'analisi di XML.
Questa enumerazione supporta una combinazione bit per bit dei rispettivi valori dei membri.
public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions =
Public Enum LoadOptions
- Ereditarietà
- Attributi
Campi
None | 0 | Non conserva spazio vuoto non significativo né carica URI di base e informazioni sulla riga. |
PreserveWhitespace | 1 | Conserva spazio vuoto non significativo durante l'analisi. |
SetBaseUri | 2 | Richiede le informazioni sull'URI di base da XmlReader e le rende disponibili tramite la proprietà BaseUri. |
SetLineInfo | 4 | Richiede le informazioni sulla riga da XmlReader e le rende disponibili tramite la proprietà XObject. |
Esempio
In questo esempio viene caricato un piccolo albero XML da un file, impostando le opzioni per impostare l'URI di base e conservare le informazioni sulla riga. Aggiunge quindi un altro elemento che non dispone di informazioni sulla riga. Stampa quindi le informazioni sulla riga per ogni elemento nell'albero.
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
Nell'esempio viene prodotto l'output seguente:
BaseUri: Test.xml
Element Name Line Position
------------ ---- --------
Root 1 2
Child1 2 6
Child2 3 6
Child3 No Line Information
Child4 4 6
Commenti
Se si mantiene lo spazio vuoto durante il caricamento, tutti gli spazi vuoti insignificanti nell'albero XML vengono materializzati nell'albero XML come è. Se non si mantiene lo spazio vuoto, tutti gli spazi vuoti insignificanti vengono eliminati.
Si verifica una penalità delle prestazioni se si imposta SetBaseUri e i flag SetLineInfo.
L'URI di base e le informazioni sulla riga sono accurate immediatamente dopo il caricamento del documento XML. Se si modifica l'albero XML dopo il caricamento del documento, l'URI di base e le informazioni sulla riga potrebbero diventare senza significato.
Se l'URI o le informazioni sulla riga sottostanti XmlReader non hanno alcun effetto, l'impostazione di SetBaseUri e i flag SetLineInfo non avranno alcun effetto.
Questo tipo consente di controllare come LINQ to XML gestisce lo spazio vuoto durante il caricamento o l'analisi. Per altre informazioni, vedere Mantenere lo spazio vuoto durante il caricamento o l'analisi di XML e La conservazione dello spazio vuoto durante la serializzazione.