Condividi tramite


XElement.Parse Metodo

Definizione

Carica un oggetto XElement da una stringa contenente XML, facoltativamente preservando lo spazio vuoto e mantenendo le informazioni sulla riga.

Overload

Parse(String)

Carica un oggetto XElement da una stringa che contiene XML.

Parse(String, LoadOptions)

Carica un oggetto XElement da una stringa contenente XML, facoltativamente preservando lo spazio vuoto e mantenendo le informazioni sulla riga.

Parse(String)

Carica un oggetto XElement da una stringa che contiene XML.

public:
 static System::Xml::Linq::XElement ^ Parse(System::String ^ text);
public static System.Xml.Linq.XElement Parse (string text);
static member Parse : string -> System.Xml.Linq.XElement
Public Shared Function Parse (text As String) As XElement

Parametri

text
String

Oggetto String che contiene il codice XML.

Restituisce

XElement

Oggetto XElement popolato dalla stringa che contiene il codice XML.

Esempio

Nell'esempio seguente viene creata una stringa contenente XML. Analizza quindi la stringa in un XElementoggetto .

XElement xmlTree = XElement.Parse("<Root> <Child> </Child> </Root>");  
Console.WriteLine(xmlTree);  
Dim xmlTree As XElement = <Root><Child></Child></Root>  
Console.WriteLine(xmlTree)  

Nell'esempio viene prodotto l'output seguente:

<Root>  
  <Child></Child>  
</Root>  

Commenti

Questo metodo non mantiene lo spazio vuoto. Se si vuole mantenere lo spazio vuoto nell'albero XML, usare l'overload del Parse metodo che accetta LoadOptions come parametro. 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.

la funzionalità di caricamento di LINQ to XML è basata su XmlReader. Pertanto, è possibile rilevare eventuali eccezioni generate dai metodi di overload e dai XmlReader.Create XmlReader metodi che legge e analizzano il documento.

Vedi anche

Si applica a

Parse(String, LoadOptions)

Carica un oggetto XElement da una stringa contenente XML, facoltativamente preservando lo spazio vuoto e mantenendo le informazioni sulla riga.

public:
 static System::Xml::Linq::XElement ^ Parse(System::String ^ text, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XElement Parse (string text, System.Xml.Linq.LoadOptions options);
static member Parse : string * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XElement
Public Shared Function Parse (text As String, options As LoadOptions) As XElement

Parametri

text
String

Oggetto String che contiene il codice XML.

options
LoadOptions

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

Restituisce

XElement

Oggetto XElement popolato dalla stringa che contiene il codice XML.

Esempio

Nell'esempio seguente viene analizzata una stringa in XElement due modi diversi: conservazione dello spazio vuoto e non conservazione dello spazio vuoto. Usa quindi una query per determinare il numero di nodi dello spazio vuoto nell'albero XML risultante.

int whiteSpaceNodes;  

XElement xmlTree1 = XElement.Parse("<Root> <Child> </Child> </Root>",  
    LoadOptions.None);  
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);  

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

Dim xmlTree1 As XElement = XElement.Parse("<Root> <Child> </Child> </Root>", LoadOptions.None)  
whiteSpaceNodes = xmlTree1 _  
    .DescendantNodesAndSelf() _  
    .OfType(Of XText)() _  
    .Where(Function(ByVal tNode As XNode) tNode.ToString().Trim().Length = 0) _  
    .Count()  
Console.WriteLine("Count of white space nodes (not preserving whitespace): {0}", whiteSpaceNodes)  

Dim xmlTree2 As XElement = XElement.Parse("<Root> <Child> </Child> </Root>", LoadOptions.PreserveWhitespace)  
whiteSpaceNodes = xmlTree2 _  
    .DescendantNodesAndSelf() _  
    .OfType(Of XText)() _  
    .Where(Function(ByVal tNode As XNode) tNode.ToString().Trim().Length = 0) _  
    .Count()  
Console.WriteLine("Count of white space nodes (preserving whitespace): {0}", whiteSpaceNodes)  

Nell'esempio viene prodotto l'output seguente:

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

Nell'esempio seguente vengono mantenute le informazioni sulla riga durante l'analisi della stringa.

string markup =  
@"<Root>  
    <Child>  
        <GrandChild/>  
    </Child>  
</Root>";  

XElement xRoot = XElement.Parse(markup, 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 xRoot.DescendantsAndSelf())  
    Console.WriteLine("{0}{1}{2}",  
        ("".PadRight(e.Ancestors().Count() * 2) + e.Name).PadRight(20),  
        ((IXmlLineInfo)e).LineNumber.ToString().PadRight(5),  
        ((IXmlLineInfo)e).LinePosition);  
Dim markup As String = _  
"<Root>" & Environment.NewLine & _  
"    <Child>" & Environment.NewLine & _  
"        <GrandChild/>" & Environment.NewLine & _  
"    </Child>" & Environment.NewLine & _  
"</Root>"  

Dim xRoot As XElement = XElement.Parse(markup, LoadOptions.SetLineInfo)  
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 xRoot.DescendantsAndSelf()  
    Console.WriteLine("{0}{1}{2}", _  
        ("".PadRight(e.Ancestors().Count() * 2) & e.Name.ToString).PadRight(20), _  
        DirectCast(e, IXmlLineInfo).LineNumber.ToString().PadRight(5), _  
        DirectCast(e, IXmlLineInfo).LinePosition)  
Next  

Nell'esempio viene prodotto l'output seguente:

Element Name        Line Position  
------------        ---- --------  
Root                1    2  
  Child             2    6  
    GrandChild      3    10  

Commenti

Se il valore XML di origine è rientro, l'impostazione del PreserveWhitespace flag causa options la lettura di tutti gli spazi vuoti nel codice XML di origine. I nodi di tipo XText vengono creati per spazi vuoti significativi e insignificanti.

Se il formato XML di origine è rientro, non impostando il PreserveWhitespace flag options , il lettore ignora tutti gli spazi vuoti insignificanti nel codice XML di origine. L'albero XML viene creato senza nodi di testo per spazi vuoti insignificanti.

Se il codice XML di origine non è rientro, l'impostazione del PreserveWhitespace flag in options non ha alcun effetto. Spazi vuoti significativi vengono ancora mantenuti e non sono presenti spazi vuoti insignificanti che potrebbero causare la creazione di nodi di testo più spazi vuoti.

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.

L'impostazione non avrà alcun effetto durante l'analisi SetBaseUri da un Stringoggetto .

Può XmlReader avere informazioni sulla riga valide o meno. Se si imposta SetLineInfo, le informazioni sulla riga verranno impostate nell'albero XML dalle informazioni sulla riga segnalate da XmlReader.

Se si imposta il SetLineInfo flag, si verifica una penalità delle prestazioni.

Le informazioni sulla riga sono accurate immediatamente dopo il caricamento del documento XML. Se si modifica l'albero XML dopo il caricamento del documento, le informazioni sulla riga potrebbero diventare senza significato.

la funzionalità di caricamento di LINQ to XML è basata su XmlReader. Pertanto, è possibile rilevare eventuali eccezioni generate dai metodi di overload e dai XmlReader.Create XmlReader metodi che legge e analizzano il documento.

Vedi anche

Si applica a