XElement.Parse 方法

定義

從包含 XML 的字串載入 XElement,並選擇性地保留泛空白字元和程式行資訊。

多載

Parse(String)

從包含 XML 的字串載入 XElement

Parse(String, LoadOptions)

從包含 XML 的字串載入 XElement,並選擇性地保留泛空白字元和程式行資訊。

Parse(String)

從包含 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,包含 XML。

傳回

XElement

從包含 XML 的字串填入的 XElement

範例

下列範例會建立包含 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 樹狀結構中保留空白字元,請使用採用 LoadOptions 做為參數的方法多載 Parse 。 如需詳細資訊,請參閱 在載入或剖析 XML 時保留空白字元 ,以及在 序列化時保留空白字元

LINQ to XML的載入功能是以 為基礎 XmlReader 。 因此,您可能會攔截多載方法所擲 XmlReader.Create 回的任何例外狀況,以及 XmlReader 讀取和剖析檔的方法。

另請參閱

適用於

Parse(String, LoadOptions)

從包含 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,包含 XML。

options
LoadOptions

LoadOptions,其指定泛空白字元 (White Space) 的行為,以及是否要載入基底 URI 和行資訊。

傳回

XElement

從包含 XML 的字串填入的 XElement

範例

下列範例會以兩種不同的方式將字串剖析為 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,在 中 options 設定 PreserveWhitespace 旗標會讓讀取器讀取來源 XML 中的所有空白字元。 系統會針對重大且不重要的空白字元建立類型的 XText 節點。

如果來源 XML 縮排,未在 中 options 設定 PreserveWhitespace 旗標,則讀取器會忽略來源 XML 中所有無意義的空白字元。 XML 樹狀結構會建立,而不會有任何文位元組點用於不重要的空白字元。

如果來源 XML 未縮排,則 PreserveWhitespace 設定 中的 options 旗標沒有任何作用。 仍然會保留重要的空白字元,而且沒有不重要的空白字元範圍,可能會導致建立更多空白字元文位元組點。

如需詳細資訊,請參閱 在載入或剖析 XML 時保留空白字元 ,以及在 序列化時保留空白字元

String 剖析 時,設定 SetBaseUri 不會有任何作用。

XmlReader可能具有有效的行資訊。 如果您設定 SetLineInfo ,則行資訊將會從 所 XmlReader 報告的行資訊中設定在 XML 樹狀結構中。

如果您設定 SetLineInfo 旗標,效能會受到負面影響。

載入 XML 檔之後,行資訊會立即正確。 如果您在載入檔之後修改 XML 樹狀結構,行資訊可能會變成無意義。

LINQ to XML的載入功能是以 為基礎 XmlReader 。 因此,您可能會攔截多載方法所擲 XmlReader.Create 回的任何例外狀況,以及 XmlReader 讀取和剖析檔的方法。

另請參閱

適用於