語言

XElement.Parse 方法

定義

從包含 XML 的字串載入 , XElement 可選擇性保留空白並保留行資訊。

多載

名稱 Description
Parse(String)

從包含 XML 的字串載入 。XElement

Parse(String, LoadOptions)

從包含 XML 的字串載入 , XElement 可選擇性保留空白並保留行資訊。

Parse(String)

來源:
XElement.cs
來源:
XElement.cs
來源:
XElement.cs
來源:
XElement.cs
來源:
XElement.cs

從包含 XML 的字串載入 。XElement

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

參數

text
String

String A 包含 XML 的 XML。

傳回

一個 XElement 由包含 XML 的字串填充的。

範例

以下範例建立包含 XML 的字串。 接著它會解析字串成一個 XElement。

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

此範例會產生下列輸出:

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

備註

此方法不會保留留白。 如果你想保留 XML 樹中的空白,可以使用該Parse方法的超載LoadOptions,該方法作為參數。 欲了解更多資訊,請參閱 載入或解析 XML 時保留空白 ,以及序列 化時保留空白。

LINQ 轉 XML 的載入功能是建立在 XmlReader之上。 因此,你可能會發現超載方法和XmlReader.Create讀取與解析文件的方法拋出XmlReader的任何異常。

另請參閱

適用於

Parse(String, LoadOptions)

來源:
XElement.cs
來源:
XElement.cs
來源:
XElement.cs
來源:
XElement.cs
來源:
XElement.cs

從包含 XML 的字串載入 , XElement 可選擇性保留空白並保留行資訊。

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

參數

text
String

String A 包含 XML 的 XML。

options
LoadOptions

A LoadOptions 指定空白空間行為,以及是否載入基底 URI 和行資訊。

傳回

一個 XElement 由包含 XML 的字串填充的。

範例

以下範例以兩種不同方式解析字串成 : XElement 保留留白,以及不保留留白。 接著它會使用查詢來確定產生的 XML 樹中空白節點的數量。

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)

此範例會產生下列輸出:

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

以下範例在解析字串時保留行資訊。

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

此範例會產生下列輸出:

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

備註

若原始 XML 有縮排,將旗標設 PreserveWhitespace 入 options 後,讀取器會讀取原始 XML 中所有空白。 有型 XText 節點會為顯著與不重要空白區建立。

如果原始 XML 有縮排,未設定 PreserveWhitespace 該標誌 options 會導致讀取器忽略原始 XML 中所有無關緊要的空白。 XML 樹是在不包含任何文字節點的情況下建立的,空白空間不重要。

如果原始 XML 沒有縮排,輸入 PreserveWhitespace 旗標 options 也不會有影響。 仍有顯著的空白區域被保留,且沒有無關緊要的空白區域,這些空白區域可能導致更多空白文字節點的產生。

欲了解更多資訊,請參閱 載入或解析 XML 時保留空白 ,以及序列 化時保留空白。

SetBaseUri從 String.

他們 XmlReader 可能有有效的線路資訊,也可能沒有。 如果你設定 SetLineInfo,行資訊會在 XML 樹中由 所報告 XmlReader的行資訊設定。

如果你設旗 SetLineInfo 子,會有績效懲罰。

行資訊在載入 XML 文件後立即準確。 如果你在載入文件後修改 XML 樹,該行資訊可能會變得毫無意義。

LINQ 轉 XML 的載入功能是建立在 XmlReader之上。 因此,你可能會發現超載方法和XmlReader.Create讀取與解析文件的方法拋出XmlReader的任何異常。

另請參閱

適用於