Partager via


XElement.Parse Méthode

Définition

Chargez un XElement à partir d'une chaîne qui contient du code XML, en conservant éventuellement les espaces blancs et les informations de ligne.

Surcharges

Parse(String)

Chargez un XElement à partir d'une chaîne qui contient le code XML.

Parse(String, LoadOptions)

Chargez un XElement à partir d'une chaîne qui contient du code XML, en conservant éventuellement les espaces blancs et les informations de ligne.

Parse(String)

Chargez un XElement à partir d'une chaîne qui contient le code 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

Paramètres

text
String

String qui contient le code XML.

Retours

XElement

XElement rempli à partir de la chaîne qui contient le code XML.

Exemples

L’exemple suivant crée une chaîne qui contient du code XML. Il analyse ensuite la chaîne en un XElement.

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

Cet exemple produit la sortie suivante :

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

Remarques

Cette méthode ne conserve pas d’espace blanc. Si vous souhaitez conserver des espaces blancs dans l’arborescence XML, utilisez la surcharge de la Parse méthode qui prend LoadOptions comme paramètre. Pour plus d’informations, consultez Conserver l’espace blanc lors du chargement ou de l’analyse de XML et conserver des espaces blancs lors de la sérialisation.

la fonctionnalité de chargement de LINQ to XML est basée sur XmlReader. Par conséquent, vous pouvez intercepter toutes les exceptions levées par les XmlReader.Create méthodes de surcharge et les XmlReader méthodes qui lisent et analysent le document.

Voir aussi

S’applique à

Parse(String, LoadOptions)

Chargez un XElement à partir d'une chaîne qui contient du code XML, en conservant éventuellement les espaces blancs et les informations de ligne.

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

Paramètres

text
String

String qui contient le code XML.

options
LoadOptions

LoadOptions qui spécifie le comportement pour les espaces blancs et détermine s'il faut charger l'URI de base et les informations de ligne.

Retours

XElement

XElement rempli à partir de la chaîne qui contient le code XML.

Exemples

L’exemple suivant analyse une chaîne de XElement deux façons différentes : préserver l’espace blanc et ne pas conserver l’espace blanc. Il utilise ensuite une requête pour déterminer le nombre de nœuds d’espace blanc dans l’arborescence XML résultante.

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)  

Cet exemple produit la sortie suivante :

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

L’exemple suivant conserve les informations de ligne au fur et à mesure de l’analyse de la chaîne.

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  

Cet exemple produit la sortie suivante :

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

Remarques

Si le code XML source est mis en retrait, la définition de l’indicateur PreserveWhitespace entraîne options la lecture de tous les espaces blancs dans le code XML source. Les nœuds de type XText sont créés pour les espaces blancs significatifs et non significatifs.

Si le code XML source est mis en retrait, le fait de ne pas définir l’indicateur PreserveWhitespace entraîne options l’ignorer dans l’espace blanc non significatif dans le code XML source. L’arborescence XML est créée sans aucun nœud de texte pour un espace blanc non significatif.

Si le code XML source n’est pas mis en retrait, la définition de l’indicateur PreserveWhitespace n’a options aucun effet. L’espace blanc significatif est toujours conservé et il n’existe pas d’étendues d’espaces blancs insignifiants susceptibles de provoquer la création de nœuds de texte d’espace blanc supplémentaires.

Pour plus d’informations, consultez Conserver l’espace blanc lors du chargement ou de l’analyse de XML et conserver des espaces blancs lors de la sérialisation.

Le paramètre SetBaseUri n’aura aucun effet lors de l’analyse à partir d’un String.

Les XmlReader informations de ligne peuvent être valides ou non. Si vous définissez SetLineInfo, les informations de ligne sont définies dans l’arborescence XML à partir des informations de ligne signalées par le XmlReader.

Il existe une pénalité de performances si vous définissez l’indicateur SetLineInfo .

Les informations de ligne sont exactes immédiatement après le chargement du document XML. Si vous modifiez l’arborescence XML après le chargement du document, les informations de ligne peuvent devenir sans signification.

la fonctionnalité de chargement de LINQ to XML est basée sur XmlReader. Par conséquent, vous pouvez intercepter toutes les exceptions levées par les XmlReader.Create méthodes de surcharge et les XmlReader méthodes qui lisent et analysent le document.

Voir aussi

S’applique à