LoadOptions 列挙型

定義

XML の解析時の読み込みオプションを指定します。

この列挙体は、メンバー値のビットごとの組み合わせをサポートしています。

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
継承
LoadOptions
属性

フィールド

名前 説明
None 0

重要でない空白を保持したり、ベース URI と行情報を読み込んだりしません。

PreserveWhitespace 1

解析中に重要でない空白を保持します。

SetBaseUri 2

XmlReaderからベース URI 情報を要求し、BaseUri プロパティを介して使用できるようにします。

SetLineInfo 4

XmlReaderから行情報を要求し、XObjectのプロパティを使用して使用できるようにします。

次の使用例は、ファイルから小さな XML ツリーを読み込み、ベース URI を設定して行情報を保持するオプションを設定します。 次に、行情報を持たない別の要素を追加します。 次に、ツリー内の各要素の行情報を出力します。

string markup = @"<Root>  
    <Child1 />  
    <Child2 />  
    <Child4 />  
</Root>";  

File.WriteAllText("Test.xml", markup);  

XElement po = XElement.Load("Test.xml",  
    LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);  

// add a node to the tree.  
// the newly added node will not have line information.  
po.Element("Child2").AddAfterSelf(new XElement("Child3"));  

string[] splitUri = po.BaseUri.Split('/');  
Console.WriteLine("BaseUri: {0}", splitUri[splitUri.Length - 1]);  
Console.WriteLine();  
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 po.DescendantsAndSelf())  
    Console.WriteLine("{0}{1}{2}",  
        ("".PadRight(e.Ancestors().Count() * 2) + e.Name).PadRight(20),  
        ((IXmlLineInfo)e).HasLineInfo() ?  
            ((IXmlLineInfo)e).LineNumber.ToString().PadRight(5) :  
            "",  
        ((IXmlLineInfo)e).HasLineInfo() ?  
            ((IXmlLineInfo)e).LinePosition.ToString() :  
            "No Line Information");  
Dim markup As String = _  
    "<Root>" + Environment.NewLine & _  
    "    <Child1 />" + Environment.NewLine & _  
    "    <Child2 />" + Environment.NewLine & _  
    "    <Child4 />" + Environment.NewLine & _  
    "</Root>"  

File.WriteAllText("Test.xml", markup)  

Dim po As XElement = XElement.Load("Test.xml", LoadOptions.SetBaseUri Or LoadOptions.SetLineInfo)  

' add a node to the tree.  
' the newly added node will not have line information.  
po.Element("Child2").AddAfterSelf(New XElement("Child3"))  

Dim splitUri() As String = po.BaseUri.Split("/"c)  
Console.WriteLine("BaseUri: {0}", splitUri(splitUri.Length - 1))  
Console.WriteLine()  
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 po.DescendantsAndSelf()  
    Console.WriteLine("{0}{1}{2}", _  
        ("".PadRight(e.Ancestors().Count() * 2) & e.Name.ToString).PadRight(20), _  
        IIf(DirectCast(e, IXmlLineInfo).HasLineInfo(), _  
            DirectCast(e, IXmlLineInfo).LineNumber.ToString().PadRight(5), _  
            ""), _  
        IIf(DirectCast(e, IXmlLineInfo).HasLineInfo(), _  
            DirectCast(e, IXmlLineInfo).LinePosition.ToString(), _  
            "No Line Information"))  
Next  

この例を実行すると、次の出力が生成されます。

BaseUri: Test.xml  

Element Name        Line Position  
------------        ---- --------  
Root                1    2  
  Child1            2    6  
  Child2            3    6  
  Child3            No Line Information  
  Child4            4    6  

注釈

読み込み時に空白を保持すると、XML ツリー内のすべての重要でない空白が XML ツリーにそのまま具体化されます。 空白を保持しない場合、重要でない空白はすべて破棄されます。

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

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

基になる XmlReader にベース URI または行情報がない場合は、SetBaseUri フラグと SetLineInfo フラグを設定しても効果はありません。

この型を使用すると、読み込みまたは解析時に LINQ to XML が空白を処理する方法を制御できます。 詳細については、「XML の 読み込みまたは解析中に空白を保持する 」および「 シリアル化中に空白を保持する」を参照してください。

適用対象

こちらもご覧ください