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

返品

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

XML を含む String

options
LoadOptions

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

返品

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 がインデントされている場合、optionsPreserveWhitespace フラグを設定すると、リーダーはソース XML 内のすべての空白を読み取ります。 XText型のノードは、重要な空白と重要でない空白の両方に対して作成されます。

ソース XML がインデントされている場合、optionsPreserveWhitespace フラグを設定しないと、リーダーはソース XML 内の重要でない空白をすべて無視します。 XML ツリーは、重要でない空白のテキスト ノードなしで作成されます。

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

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

SetBaseUriを設定しても、Stringから解析しても効果はありません。

XmlReaderには、有効な行情報が含まれているかどうかがあります。 SetLineInfo設定すると、XmlReaderによって報告される行情報から XML ツリーに行情報が設定されます。

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

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

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

こちらもご覧ください

適用対象