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
| Nome | Valore | Descrizione |
|---|---|---|
| None | 0 | Non mantiene spazi vuoti non significativi o carica informazioni sull'URI di base e sulla riga. |
| PreserveWhitespace | 1 | Mantiene spazi vuoti non significativi durante l'analisi. |
| SetBaseUri | 2 | Richiede le informazioni sull'URI XmlReaderdi base da e lo rende disponibile tramite la BaseUri proprietà . |
| SetLineInfo | 4 | Richiede le informazioni sulla riga da XmlReader e le rende disponibili tramite le proprietà in 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
In questo esempio viene generato 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 non significativi nell'albero XML vengono materializzati nell'albero XML così come sono. Se non si mantiene lo spazio vuoto, tutti gli spazi vuoti non significativi vengono eliminati.
Se si impostano setBaseUri e i flag SetLineInfo, si verifica una riduzione delle prestazioni.
L'URI di base e le informazioni sulla riga sono accurati 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 inutili.
Se l'oggetto sottostante XmlReader non dispone di informazioni sull'URI di base o sulla riga, l'impostazione dei flag SetBaseUri e SetLineInfo non avrà alcun effetto.
Questo tipo consente di controllare il modo in cui 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 Mantenere lo spazio vuoto durante la serializzazione.