XElement.Parse 方法

定義

從包含 XML 的字串載入 XElement,並選擇性地保留泛空白字元和程式行資訊。Load an XElement from a string that contains XML, optionally preserving white space and retaining line information.

多載

Parse(String)

從包含 XML 的字串載入 XElementLoad an XElement from a string that contains XML.

Parse(String, LoadOptions)

從包含 XML 的字串載入 XElement,並選擇性地保留泛空白字元和程式行資訊。Load an XElement from a string that contains XML, optionally preserving white space and retaining line information.

Parse(String)

從包含 XML 的字串載入 XElementLoad an XElement from a string that contains 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

參數

text
String

String,包含 XML。A String that contains XML.

傳回

從包含 XML 的字串填入的 XElementAn XElement populated from the string that contains XML.

範例

下列範例會建立包含 XML 的字串。The following example creates a string that contains XML. 然後,它會將字串剖析為 XElementIt then parses the string into an XElement.

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

這個範例會產生下列輸出:This example produces the following output:

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

備註

這個方法不會保留空白字元。This method does not preserve white space. 如果您想要保留 XML 樹狀結構中的空白字元,請使用接受 LoadOptions 作為參數之 Parse 方法的多載。If you want to preserve white space in the XML tree, use the overload of the Parse method that takes LoadOptions as a parameter. 如需詳細資訊,請參閱在載入或剖析 XML 時保留空白字元,並在序列化時保留空白字元。For more information, see Preserving White Space while Loading or Parsing XML and Preserving White Space While Serializing.

LINQ to XML 的載入功能是以 XmlReader為基礎。LINQ to XML's loading functionality is built upon XmlReader. 因此,您可能會攔截 XmlReader.Create 多載方法所擲回的任何例外狀況,以及讀取和剖析檔的 XmlReader 方法。Therefore, you might catch any exceptions that are thrown by the XmlReader.Create overload methods and the XmlReader methods that read and parse the document.

另請參閱

Parse(String, LoadOptions)

從包含 XML 的字串載入 XElement,並選擇性地保留泛空白字元和程式行資訊。Load an XElement from a string that contains XML, optionally preserving white space and retaining line information.

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。A String that contains XML.

options
LoadOptions

LoadOptions,其指定泛空白字元 (White Space) 的行為,以及是否要載入基底 URI 和行資訊。A LoadOptions that specifies white space behavior, and whether to load base URI and line information.

傳回

從包含 XML 的字串填入的 XElementAn XElement populated from the string that contains XML.

範例

下列範例會以兩種不同的方式,將字串剖析為 XElement:保留空白字元,而不保留空白字元。The following example parses a string into an XElement in two different ways: preserving white space, and not preserving white space. 然後,它會使用查詢來判斷產生的 XML 樹狀結構中的空白字元節點數目。It then uses a query to determine the number of white space nodes in the resulting XML tree.

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)  

這個範例會產生下列輸出:This example produces the following output:

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

下列範例會在剖析字串時保留行資訊。The following example retains line information as it parses the string.

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  

這個範例會產生下列輸出:This example produces the following output:

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

備註

如果來源 XML 已縮排,在 options 中設定 PreserveWhitespace 旗標,會使讀取器讀取來源 XML 中的所有空白字元。If the source XML is indented, setting the PreserveWhitespace flag in options causes the reader to read all white space in the source XML. XText 類型的節點都是針對重要和無意義的空白字元所建立。Nodes of type XText are created for both significant and insignificant white space.

如果來源 XML 已縮排,則不會在 options 中設定 PreserveWhitespace 旗標,會使讀取器忽略來源 XML 中所有無意義的空白字元。If the source XML is indented, not setting the PreserveWhitespace flag in options causes the reader to ignore all of the insignificant white space in the source XML. 建立 XML 樹狀結構時,不會有無意義空白字元的任何文位元組點。The XML tree is created without any text nodes for insignificant white space.

如果來源 XML 未縮排,在 options 中設定 PreserveWhitespace 旗標不會有任何作用。If the source XML is not indented, setting the PreserveWhitespace flag in options has no effect. 系統仍然會保留顯著的空白字元,而且不會有任何無意義的空白字元,因而導致無法建立更多空白字元文位元組點。Significant white space is still preserved, and there are no spans of insignificant white space that could cause the creation of more white space text nodes.

如需詳細資訊,請參閱在載入或剖析 XML 時保留空白字元,並在序列化時保留空白字元。For more information, see Preserving White Space while Loading or Parsing XML and Preserving White Space While Serializing.

String進行剖析時,設定 SetBaseUri 將不會有任何作用。Setting SetBaseUri will have no effect when parsing from a String.

XmlReader 可能會有有效的行資訊。The XmlReader may have a valid line information or not. 如果您設定 SetLineInfo,則會在 XML 樹狀結構中,根據 XmlReader所報告的行資訊來設定行資訊。If you set SetLineInfo, the line information will be set in the XML tree from the line information that is reported by the XmlReader.

如果您設定 SetLineInfo 旗標,會造成效能上的負面影響。There is a performance penalty if you set the SetLineInfo flag.

載入 XML 檔之後,行資訊會立即正確。The line information is accurate immediately after loading the XML document. 如果您在載入檔之後修改 XML 樹狀結構,行資訊可能會變得沒有意義。If you modify the XML tree after loading the document, the line information may become meaningless.

LINQ to XML 的載入功能是以 XmlReader為基礎。LINQ to XML's loading functionality is built upon XmlReader. 因此,您可能會攔截 XmlReader.Create 多載方法所擲回的任何例外狀況,以及讀取和剖析檔的 XmlReader 方法。Therefore, you might catch any exceptions that are thrown by the XmlReader.Create overload methods and the XmlReader methods that read and parse the document.

另請參閱

適用於