Прочитать на английском

Поделиться через


LoadOptions Перечисление

Определение

Указывает параметры загрузки для синтаксического анализа XML.

Это перечисление поддерживает побитовую комбинацию значений его членов.

C#
[System.Flags]
public enum LoadOptions
Наследование
LoadOptions
Атрибуты

Поля

None 0

Не сохраняет незначительные пробелы или загружает базовый URI и информацию строки.

PreserveWhitespace 1

Сохраняет незначительные пробелы при анализе.

SetBaseUri 2

Запрашивает информацию о базовом URI из XmlReader и делает ее доступной через свойство BaseUri.

SetLineInfo 4

Запрашивает информацию о строке из XmlReader и делает ее доступной через свойства на XObject.

Примеры

В этом примере загружается небольшое XML-дерево из файла, задав параметры для задания базового URI и сохранения сведений о строке. Затем добавляется еще один элемент, который не содержит сведений о строке. Затем он выводит сведения о строке для каждого элемента дерева.

C#
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");  

В этом примере выводятся следующие данные:

BaseUri: Test.xml  

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

Комментарии

При сохранении пробелов при загрузке все незначительные пробелы в XML-дереве материализуются в XML-дереве как есть. Если не сохранять пробелы, все незначительные пробелы удаляются.

Если задать флаги SetBaseUri и SetLineInfo, то производительность будет ниже.

Базовый универсальный код ресурса (URI) и сведения о строке точны сразу после загрузки XML-документа. При изменении XML-дерева после загрузки документа базовый URI и сведения о строке могут стать бессмысленными.

Если базовый XmlReader код ресурса не содержит базовых URI или сведений о строке, установка флагов SetBaseUri и SetLineInfo не повлияет.

Этот тип позволяет управлять обработкой пробелов LINQ to XML при загрузке или синтаксическом анализе. Дополнительные сведения см. в разделе "Сохранение пробела" при загрузке или анализе XML и сохранении пробелов при сериализации.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел