Aracılığıyla paylaş


XElement.Parse Yöntem

Tanım

XML içeren bir dizeden bir XElement yükleyerek isteğe bağlı olarak boşluğu koruyun ve satır bilgilerini koruyun.

Aşırı Yüklemeler

Parse(String)

XML içeren bir dizeden XElement yükleyin.

Parse(String, LoadOptions)

XML içeren bir dizeden bir XElement yükleyerek isteğe bağlı olarak boşluğu koruyun ve satır bilgilerini koruyun.

Parse(String)

Kaynak:
XElement.cs
Kaynak:
XElement.cs
Kaynak:
XElement.cs

XML içeren bir dizeden XElement yükleyin.

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

Parametreler

text
String

XML içeren bir String.

Döndürülenler

XML içeren dizeden doldurulan bir XElement.

Örnekler

Aşağıdaki örnek, XML içeren bir dize oluşturur. Ardından dizeyi bir XElementolarak ayrıştırıyor.

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

Bu örnek aşağıdaki çıkışı oluşturur:

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

Açıklamalar

Bu yöntem boşluğu korumaz. XML ağacındaki boşluğu korumak istiyorsanız, parametre olarak LoadOptions alan Parse yönteminin aşırı yüklemesini kullanın. Daha fazla bilgi için bkz. XML yüklerken veya ayrıştırırken boşluğu koruma ve seri hale getirirken boşlukları koruma.

LINQ to XML'nin yükleme işlevi XmlReaderüzerine kurulmuştur. Bu nedenle, XmlReader.Create aşırı yükleme yöntemleri ve belgeyi okuyan ve ayrıştıran XmlReader yöntemleri tarafından oluşan özel durumları yakalayabilirsiniz.

Ayrıca bkz.

  • LINQ to XML'e genel bakış

Şunlara uygulanır

Parse(String, LoadOptions)

Kaynak:
XElement.cs
Kaynak:
XElement.cs
Kaynak:
XElement.cs

XML içeren bir dizeden bir XElement yükleyerek isteğe bağlı olarak boşluğu koruyun ve satır bilgilerini koruyun.

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

Parametreler

text
String

XML içeren bir String.

options
LoadOptions

Boşluk davranışını ve temel URI ile satır bilgilerinin yüklenip yüklenmeyeceğini belirten bir LoadOptions.

Döndürülenler

XML içeren dizeden doldurulan bir XElement.

Örnekler

Aşağıdaki örnek, bir dizeyi bir XElement iki farklı şekilde ayrıştırmaktadır: boşluk koruma ve boşluk korumama. Ardından, sonuçta elde edilen XML ağacındaki boşluk düğümlerinin sayısını belirlemek için bir sorgu kullanır.

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)

Bu örnek aşağıdaki çıkışı oluşturur:

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

Aşağıdaki örnek, dizeyi ayrıştırdıkça satır bilgilerini korur.

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

Bu örnek aşağıdaki çıkışı oluşturur:

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

Açıklamalar

Kaynak XML girintiliyse, PreserveWhitespace bayrağının options ayarlanması okuyucunun kaynak XML'deki tüm boşlukları okumasına neden olur. XText türündeki düğümler hem önemli hem de önemsiz boşluklar için oluşturulur.

Kaynak XML girintiliyse, PreserveWhitespace bayrağının options olarak ayarlanmaması okuyucunun kaynak XML'deki tüm önemsiz boşlukları yoksaymasına neden olur. XML ağacı, önemsiz boşluklar için herhangi bir metin düğümü olmadan oluşturulur.

Kaynak XML girintili değilse, options'da PreserveWhitespace bayrağının ayarlanmasının hiçbir etkisi olmaz. Önemli boşluklar hala korunur ve daha fazla boşluk metin düğümü oluşturulmasına neden olabilecek önemsiz boşluk aralıkları yoktur.

Daha fazla bilgi için bkz. XML yüklerken veya ayrıştırırken boşluğu koruma ve seri hale getirirken boşlukları koruma.

bir Stringayrıştırırken SetBaseUri ayarlanmasının hiçbir etkisi olmaz.

XmlReader geçerli bir satır bilgisi olabilir veya olmayabilir. SetLineInfoayarlarsanız, satır bilgileri xml ağacında XmlReadertarafından bildirilen satır bilgilerinden ayarlanır.

SetLineInfo bayrağını ayarlarsanız bir performans cezası vardır.

Satır bilgileri, XML belgesi yüklendikten hemen sonra doğrulanır. Belgeyi yükledikten sonra XML ağacını değiştirirseniz, satır bilgileri anlamsız hale gelebilir.

LINQ to XML'nin yükleme işlevi XmlReaderüzerine kurulmuştur. Bu nedenle, XmlReader.Create aşırı yükleme yöntemleri ve belgeyi okuyan ve ayrıştıran XmlReader yöntemleri tarafından oluşan özel durumları yakalayabilirsiniz.

Ayrıca bkz.

  • LINQ to XML'e genel bakış

Şunlara uygulanır