XElement.Parse Metodo

Definizione

Caricare un oggetto XElement da una stringa contenente codice XML, mantenendo facoltativamente gli spazi vuoti e mantenendo le informazioni sulla riga.

Overload

Nome Descrizione
Parse(String)

Caricare un oggetto XElement da una stringa contenente XML.

Parse(String, LoadOptions)

Caricare un oggetto XElement da una stringa contenente codice XML, mantenendo facoltativamente gli spazi vuoti e mantenendo le informazioni sulla riga.

Parse(String)

Origine:
XElement.cs
Origine:
XElement.cs
Origine:
XElement.cs
Origine:
XElement.cs
Origine:
XElement.cs

Caricare un oggetto XElement da una stringa contenente 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 contenente XML.

Valori restituiti

Oggetto XElement popolato dalla stringa che contiene XML.

Esempio

Nell'esempio seguente viene creata una stringa contenente xml. Analizza quindi la stringa in un oggetto XElement.

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

In questo esempio viene generato l'output seguente:

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

Commenti

Questo metodo non mantiene lo spazio vuoto. Se si desidera mantenere lo spazio vuoto nell'albero XML, utilizzare 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 Mantenere lo spazio vuoto durante la serializzazione.

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

Vedi anche

Si applica a

Parse(String, LoadOptions)

Origine:
XElement.cs
Origine:
XElement.cs
Origine:
XElement.cs
Origine:
XElement.cs
Origine:
XElement.cs

Caricare un oggetto XElement da una stringa contenente codice XML, mantenendo facoltativamente gli spazi vuoti 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 contenente XML.

options
LoadOptions

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

Valori restituiti

Oggetto XElement popolato dalla stringa che contiene XML.

Esempio

Nell'esempio seguente viene analizzata una stringa in XElement due modi diversi: mantenere lo spazio vuoto e non conservare lo spazio vuoto. Usa quindi una query per determinare il numero di nodi di 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)

In questo esempio viene generato 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

In questo esempio viene generato l'output seguente:

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

Commenti

Se il formato XML di origine è rientrato, l'impostazione del PreserveWhitespace flag in options fa sì che il lettore legga tutti gli spazi vuoti nel codice XML di origine. I nodi di tipo XText vengono creati per spazi vuoti significativi e non significativi.

Se il rientro del codice XML di origine non viene impostato, l'impostazione del PreserveWhitespace flag in options fa sì che il lettore ignori tutti gli spazi vuoti non significativi nel codice XML di origine. L'albero XML viene creato senza nodi di testo per spazi vuoti non significativi.

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

Per altre informazioni, vedere Mantenere lo spazio vuoto durante il caricamento o l'analisi di XML e Mantenere lo spazio vuoto durante la serializzazione.

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

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

Se si imposta il SetLineInfo flag, si verifica una riduzione 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 inutili.

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

Vedi anche

Si applica a