XElement.Parse 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從包含 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
參數
傳回
從包含 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
參數
- options
- LoadOptions
LoadOptions,其指定泛空白字元 (White Space) 的行為,以及是否要載入基底 URI 和行資訊。
傳回
從包含 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 讀取和剖析檔的方法。