LoadOptions Enum

Definisi

Menentukan opsi pemuatan saat mengurai XML.

Enumerasi ini mendukung kombinasi bitwise dari nilai yang termasuk di dalamnya.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Warisan
LoadOptions
Atribut

Bidang

Nama Nilai Deskripsi
None 0

Tidak mempertahankan ruang putih yang tidak signifikan atau memuat URI dasar dan informasi garis.

PreserveWhitespace 1

Mempertahankan ruang putih yang tidak signifikan saat mengurai.

SetBaseUri 2

Meminta informasi URI dasar dari XmlReader, dan membuatnya tersedia melalui BaseUri properti .

SetLineInfo 4

Meminta informasi baris dari XmlReader dan membuatnya tersedia melalui properti di XObject.

Contoh

Contoh ini memuat pohon XML kecil dari file, mengatur opsi untuk mengatur URI dasar dan mempertahankan informasi baris. Kemudian menambahkan elemen lain yang tidak memiliki informasi baris. Kemudian mencetak informasi baris untuk setiap elemen di pohon.

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  

Contoh ini menghasilkan output berikut:

BaseUri: Test.xml  

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

Keterangan

Jika Anda mempertahankan spasi putih saat memuat, semua ruang putih yang tidak signifikan di pohon XML diwujudkan di pohon XML apa adanya. Jika Anda tidak mempertahankan ruang putih, maka semua ruang putih yang tidak signifikan akan dibuang.

Ada penalti performa jika Anda mengatur bendera SetBaseUri dan SetLineInfo.

URI dasar dan informasi baris akurat segera setelah memuat dokumen XML. Jika Anda mengubah pohon XML setelah memuat dokumen, URI dasar dan informasi baris mungkin menjadi tidak berarti.

Jika yang mendasar XmlReader tidak memiliki URI dasar atau informasi baris, pengaturan SetBaseUri dan bendera SetLineInfo tidak akan berpengaruh.

Jenis ini memungkinkan Anda mengontrol bagaimana LINQ ke XML menangani spasi kosong saat memuat atau mengurai. Untuk informasi selengkapnya, lihat Mempertahankan spasi kosong saat memuat atau mengurai XML dan Mempertahankan spasi kosong saat melakukan serialisasi.

Berlaku untuk

Lihat juga