LoadOptions Sabit listesi

Tanım

XML ayrıştırırken yükleme seçeneklerini belirtir.

Bu sabit listesi, üyeleri için bit düzeyinde karşılaştırmayı destekler.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Devralma
LoadOptions
Öznitelikler

Alanlar

Name Değer Description
None 0

Önemsiz boşluk veya yük tabanı URI'sini ve satır bilgilerini korumaz.

PreserveWhitespace 1

Ayrıştırma sırasında önemsiz boşlukları korur.

SetBaseUri 2

'den XmlReadertemel URI bilgilerini istemektedir ve özelliği aracılığıyla BaseUri kullanılabilir hale getirir.

SetLineInfo 4

öğesinden XmlReader satır bilgilerini istemektedir ve üzerindeki XObjectözellikler aracılığıyla kullanılabilir hale getirir.

Örnekler

Bu örnek, temel URI'yi ayarlamak ve satır bilgilerini korumak için seçenekleri ayarlayarak dosyadan küçük bir XML ağacı yükler. Ardından satır bilgisi olmayan başka bir öğe ekler. Ardından ağaçtaki her öğe için satır bilgilerini yazdırır.

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  

Bu örnek aşağıdaki çıkışı oluşturur:

BaseUri: Test.xml  

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

Açıklamalar

Yüklerken boşlukları korursanız, XML ağacındaki tüm önemsiz boşluklar XML ağacında olduğu gibi gerçekleştirilir. Boşlukları korumazsanız, tüm önemsiz boşluklar atılır.

SetBaseUri ve SetLineInfo bayraklarını ayarlarsanız bir performans cezası vardır.

Temel URI ve satır bilgileri, XML belgesi yüklendikten hemen sonra doğru. Belgeyi yükledikten sonra XML ağacını değiştirirseniz, temel URI ve satır bilgileri anlamsız hale gelebilir.

Temel alınan XmlReader URI veya satır bilgilerine sahip değilse, SetBaseUri ve SetLineInfo bayraklarının ayarlanmasının hiçbir etkisi olmaz.

Bu tür, LINQ to XML'nin yükleme veya ayrıştırma sırasında boşlukları nasıl işlediğini denetlemenize olanak tanır. Daha fazla bilgi için bkz . XML'yi yüklerken veya ayrıştırırken boşluklarıkoruma ve Seri hale getirirken boşlukları koruma.

Şunlara uygulanır

Ayrıca bkz.