Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo XElement.Load (TextReader, LoadOptions)

 

Data di pubblicazione: novembre 2016

Carica XElement da un oggetto TextReader, facoltativamente preservando lo spazio e mantenendo le informazioni sulla riga.

Spazio dei nomi:   System.Xml.Linq
Assembly:  System.Xml.Linq (in System.Xml.Linq.dll)

public static XElement Load(
	TextReader textReader,
	LoadOptions options
)

Parametri

textReader
Type: System.IO.TextReader

Oggetto TextReader che verrà letto per il contenuto di XElement.

options
Type: System.Xml.Linq.LoadOptions

Oggetto LoadOptions che specifica il comportamento dello spazio vuoto e se caricare l'URI di base e le informazioni sulla riga.

Valore restituito

Type: System.Xml.Linq.XElement

Oggetto XElement contenente il codice XML letto dall'oggetto TextReader specificato.

Se l'origine XML rientrato, l'impostazione di PreserveWhitespace flag in options fa sì che il lettore leggere tutti gli spazi vuoti nel documento XML di origine. Nodi di tipo XText vengono creati degli spazi vuoti non significativi e significativi.

Se l'origine XML rientrato, se non si imposta la PreserveWhitespace flag in options fa sì che il lettore ignorare tutti gli spazi vuoti non significativi nel documento XML di origine. La struttura ad albero XML viene creata senza nodi di testo per gli spazi vuoti non significativi.

Se l'origine XML non è rientrato, l'impostazione di PreserveWhitespace flag in options non ha alcun effetto. Spazi vuoti significativi vengono comunque mantenuti e non sono presenti intervalli di spazi vuoti non significativi che potrebbero causare la creazione di più nodi testo con spazi vuoti.

Per altre informazioni, vedere Conservando lo spazio vuoto durante il caricamento o l'analisi XML3 e Conservando lo spazio vuoto durante la Serializing1.

Utilizzare Parse per creare un XElement da una stringa che contiene il codice XML.

L'impostazione SetBaseUri avrà alcun effetto durante il caricamento da un TextReader.

Si verifica una riduzione delle prestazioni se imposta la SetLineInfo flag.

Le informazioni della riga sono accurate immediatamente dopo il caricamento del documento XML. Se si modifica la struttura ad albero XML dopo il caricamento del documento, le informazioni sulla riga potrebbero risultare inutili.

LINQ per le funzionalità di caricamento del XML si basa su XmlReader. Pertanto, è possibile rilevare eventuali eccezioni generate dal XmlReader.Create overload di metodi e XmlReader metodi che leggono e analizzano il documento.

Nell'esempio seguente viene caricato un XElement da un StringReader in due modi diversi: conservando lo spazio vuoto e non preservando lo spazio vuoto. Viene quindi utilizzata una query per determinare il numero di nodi con spazi vuoti nell'albero XML risulta.


                TextReader sr;
int whiteSpaceNodes;

sr = new StringReader("<Root> <Child> </Child> </Root>");
XElement xmlTree1 = XElement.Load(sr, LoadOptions.None);
sr.Close();
whiteSpaceNodes = xmlTree1
    .DescendantNodesAndSelf()
    .OfType<XText>()
    .Where(tNode => tNode.ToString().Trim().Length == 0)
    .Count();
Console.WriteLine("Count of white space nodes (not preserving whitespace): {0}", whiteSpaceNodes);

sr = new StringReader("<Root> <Child> </Child> </Root>");
XElement xmlTree2 = XElement.Load(sr, LoadOptions.PreserveWhitespace);
sr.Close();
whiteSpaceNodes = xmlTree2
    .DescendantNodesAndSelf()
    .OfType<XText>()
    .Where(tNode => tNode.ToString().Trim().Length == 0)
    .Count();
Console.WriteLine("Count of white space nodes (preserving whitespace): {0}", whiteSpaceNodes);

Questo esempio produce il seguente output:


                Count of white space nodes (not preserving whitespace): 0
Count of white space nodes (preserving whitespace): 3

Nell'esempio seguente carica le informazioni sulla riga in caso di caricamento dal TextReader. E quindi stampare le informazioni sulla riga.


                TextReader sr = new StringReader(
@"<Root>
  <Child>
    <GrandChild1/>
    <GrandChild2/>
  </Child>
</Root>");
XElement po = XElement.Load(sr,
    LoadOptions.SetLineInfo);
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).LineNumber.ToString().PadRight(5),
        ((IXmlLineInfo)e).LinePosition);

Questo esempio produce il seguente output:


                Element Name        Line Position
------------        ---- --------
Root                1    2
  Child             2    4
    GrandChild1     3    6
    GrandChild2     4    6

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: