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

Определение

Задает параметры загрузки при анализе XML.

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

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
Наследование
LoadOptions
Атрибуты

Поля

Имя Значение Описание
None 0

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

PreserveWhitespace 1

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

SetBaseUri 2

Запрашивает базовые сведения URI из объекта XmlReaderи делает его доступным через BaseUri свойство.

SetLineInfo 4

Запрашивает сведения о строке из объекта XmlReader и делает его доступным через свойства.XObject

Примеры

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

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  

В примере получается следующий вывод.

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) не имеет базовых URI или сведений о строке, установка setBaseUri и флагов SetLineInfo не будет иметь эффекта.

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

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

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