XElement.Parse Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Carrega um XElement de uma cadeia de caracteres que contém XML, opcionalmente preservando espaço em branco e retendo informações de linha.
Sobrecargas
Parse(String) |
Carrega um XElement de uma cadeia de caracteres que contém XML. |
Parse(String, LoadOptions) |
Carrega um XElement de uma cadeia de caracteres que contém XML, opcionalmente preservando espaço em branco e retendo informações de linha. |
Parse(String)
Carrega um XElement de uma cadeia de caracteres que contém 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
Parâmetros
Retornos
Um XElement populado com base na cadeia de caracteres que contém o XML.
Exemplos
O exemplo a seguir cria uma cadeia de caracteres que contém XML. Em seguida, ele analisa a cadeia de caracteres em um XElement.
XElement xmlTree = XElement.Parse("<Root> <Child> </Child> </Root>");
Console.WriteLine(xmlTree);
Dim xmlTree As XElement = <Root><Child></Child></Root>
Console.WriteLine(xmlTree)
Esse exemplo gera a saída a seguir:
<Root>
<Child></Child>
</Root>
Comentários
Esse método não preserva o espaço em branco. Se você quiser preservar o espaço em branco na árvore XML, use a sobrecarga do Parse método que usa LoadOptions como parâmetro. Para obter mais informações, consulte Preservar espaço em branco ao carregar ou analisar XML e Preservar espaço em branco durante a serialização.
A funcionalidade de carregamento do LINQ to XML é criada.XmlReader Portanto, você pode capturar quaisquer exceções geradas pelos XmlReader.Create métodos de sobrecarga e pelos XmlReader métodos que leem e analisam o documento.
Confira também
Aplica-se a
Parse(String, LoadOptions)
Carrega um XElement de uma cadeia de caracteres que contém XML, opcionalmente preservando espaço em branco e retendo informações de linha.
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
Parâmetros
- options
- LoadOptions
LoadOptions que especificam o comportamento de espaço em branco e se serão carregadas as informações de linha e o URI base.
Retornos
Um XElement populado com base na cadeia de caracteres que contém o XML.
Exemplos
O exemplo a seguir analisa uma cadeia de caracteres de XElement duas maneiras diferentes: preservando o espaço em branco e não preservando o espaço em branco. Em seguida, ele usa uma consulta para determinar o número de nós de espaço em branco na árvore XML resultante.
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)
Esse exemplo gera a saída a seguir:
Count of white space nodes (not preserving whitespace): 0
Count of white space nodes (preserving whitespace): 3
O exemplo a seguir retém informações de linha enquanto analisa a cadeia de caracteres.
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
Esse exemplo gera a saída a seguir:
Element Name Line Position
------------ ---- --------
Root 1 2
Child 2 6
GrandChild 3 10
Comentários
Se o XML de origem estiver recuado, definir o PreserveWhitespace sinalizador options
fará com que o leitor leia todo o espaço em branco no XML de origem. Nós de tipo XText são criados para espaço em branco significativo e insignificante.
Se o XML de origem estiver recuado, não definir o PreserveWhitespace sinalizador options
fará com que o leitor ignore todo o espaço em branco insignificante no XML de origem. A árvore XML é criada sem nenhum nó de texto para espaço em branco insignificante.
Se o XML de origem não estiver recuado, a configuração do PreserveWhitespace sinalizador options
não terá efeito. Espaço em branco significativo ainda é preservado, e não há intervalos de espaço em branco insignificante que possam causar a criação de mais nós de texto de espaço em branco.
Para obter mais informações, consulte Preservar espaço em branco ao carregar ou analisar XML e Preservar espaço em branco durante a serialização.
A configuração SetBaseUri não terá nenhum efeito ao analisar a partir de um String.
Pode XmlReader ter uma informação de linha válida ou não. Se você definir SetLineInfo, as informações de linha serão definidas na árvore XML a partir das informações de linha relatadas XmlReaderpelo .
Haverá uma penalidade de desempenho se você definir o SetLineInfo sinalizador.
As informações de linha são precisas imediatamente após o carregamento do documento XML. Se você modificar a árvore XML depois de carregar o documento, as informações de linha poderão se tornar sem sentido.
A funcionalidade de carregamento do LINQ to XML é criada.XmlReader Portanto, você pode capturar quaisquer exceções geradas pelos XmlReader.Create métodos de sobrecarga e pelos XmlReader métodos que leem e analisam o documento.