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
| 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.