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

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 istemekte ve özelliği aracılığıyla BaseUri kullanılabilir hale getirmektedir.

SetLineInfo 4

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

Örnekler

Bu örnek, bir dosyadan küçük bir XML ağacı yükleyip temel URI'yi ayarlama ve satır bilgilerini koruma seçeneklerini ayarlar. 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ükleme sırasında boşlukları korursanız, XML ağacındaki tüm önemsiz boşluklar XML ağacında olduğu gibi gerçekleştirilir. Boşluğu korumazsanız, tüm önemsiz boşluklar atılır.

SetBaseUri ve SetLineInfo bayraklarını ayarlarsanız bir performans cezası oluşur.

Temel URI ve satır bilgileri, XML belgesi yüklendikten hemen sonra doğru şekildedir. 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 yükleme veya ayrıştırma sırasında boşluğu 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şluğu koruma ve Serileştirme sırasında boşluğu koruma.

Şunlara uygulanır

Ayrıca bkz.