LoadOptions Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- Ö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.