XElement.Parse メソッド

定義

XML を格納した文字列から XElement を読み込み、必要に応じて、空白および行情報を保持します。Load an XElement from a string that contains XML, optionally preserving white space and retaining line information.

オーバーロード

Parse(String)

XML を格納した文字列から XElement を読み込みます。Load 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 を格納した文字列から XElement を読み込みます。Load 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

XML を格納している StringA String that contains XML.

戻り値

XML を格納した文字列から設定された XElementAn XElement populated from the string that contains XML.

次の例では、XML を含む文字列を作成します。The following example creates a string that contains XML. 次に、文字列を解析して @no__t 0 にします。It 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. したがって、@no__t 0 のオーバーロードメソッドによってスローされた例外と、ドキュメントを読み取って解析する 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

XML を格納している StringA String that contains XML.

options
LoadOptions

空白に対する動作、およびベース URI と行情報を読み込むかどうかを指定する LoadOptionsA 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.

次の例では、2つの異なる方法で文字列を解析して 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 がインデントされている場合は、optionsPreserveWhitespace フラグを設定すると、リーダーはソース 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. @No__t-0 型のノードは、有意な空白と意味のない空白の両方に対して作成されます。Nodes of type XText are created for both significant and insignificant white space.

ソース XML がインデントされている場合、optionsPreserveWhitespace フラグを設定しないと、リーダーはソース 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 がインデントされていない場合は、optionsPreserveWhitespace フラグを設定しても効果はありません。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.

@No__t-1 から解析する場合、SetBaseUri を設定しても効果はありません。Setting SetBaseUri will have no effect when parsing from a String.

@No__t-0 には有効な行情報が含まれている可能性があります。The XmlReader may have a valid line information or not. @No__t-0 に設定すると、行情報は、XmlReader によって報告された行情報から XML ツリーで設定されます。If you set SetLineInfo, the line information will be set in the XML tree from the line information that is reported by the XmlReader.

@No__t-0 フラグを設定すると、パフォーマンスが低下します。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. したがって、@no__t 0 のオーバーロードメソッドによってスローされた例外と、ドキュメントを読み取って解析する 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.

こちらもご覧ください

適用対象