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

XML を格納している String

戻り値

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、ドキュメントを読み取って解析するXmlReader.Createメソッドによってスローされる例外をキャッチできます。

こちらもご覧ください

適用対象

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

XML を格納している String

options
LoadOptions

空白に対する動作、およびベース URI と行情報を読み込むかどうかを指定する LoadOptions

戻り値

XElement

XML を格納した文字列から設定された XElement

次の例では、空白を保持し、空白を保持しないという 2 つの異なる方法で文字列 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 がインデントされている場合、フラグoptionsPreserveWhitespace設定しないと、リーダーはソース XML 内の重要でない空白をすべて無視します。 XML ツリーは、重要でない空白のテキスト ノードなしで作成されます。

ソース XML がインデントされていない場合、フラグを PreserveWhitespace 設定 options しても効果はありません。 重要な空白は引き続き保持され、空白テキスト ノードの作成を引き起こす可能性のある重要でない空白のスパンはありません。

詳細については、「XML の 読み込みまたは解析中に空白を保持する 」および「 シリアル化中に空白を保持する」を参照してください。

から解析Stringする場合、設定SetBaseUriは無効になります。

有効 XmlReader な行情報を持っているかどうか。 設定 SetLineInfoした場合、XML ツリー内の行情報は、その行情報 XmlReaderから設定されます。

フラグを設定すると、パフォーマンスが低下します SetLineInfo

行情報は、XML ドキュメントを読み込んだ直後に正確です。 ドキュメントの読み込み後に XML ツリーを変更すると、行情報が意味を失う可能性があります。

LINQ to XMLの読み込み機能が基にXmlReader構築されています。 したがって、オーバーロード メソッドとXmlReader、ドキュメントを読み取って解析するXmlReader.Createメソッドによってスローされる例外をキャッチできます。

こちらもご覧ください

適用対象