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

Определение

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

Это перечисление имеет атрибут FlagsAttribute, который разрешает побитовое сочетание значений его элементов.

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

Поля

None 0

Не сохраняет незначительные пробелы или загружает базовый URI и информацию строки.Does not preserve insignificant white space or load base URI and line information.

PreserveWhitespace 1

Сохраняет незначительные пробелы при анализе.Preserves insignificant white space while parsing.

SetBaseUri 2

Запрашивает информацию о базовом URI из XmlReader и делает ее доступной через свойство BaseUri.Requests the base URI information from the XmlReader, and makes it available via the BaseUri property.

SetLineInfo 4

Запрашивает информацию о строке из XmlReader и делает ее доступной через свойства на XObject.Requests the line information from the XmlReader and makes it available via properties on XObject.

Примеры

В этом примере загружается небольшое XML-дерево из файла, устанавливаются параметры, устанавливающие базовый URI и сохраняющие сведения о строке.This example loads a small XML tree from a file, setting the options to set base URI and retain line information. Затем он добавляет еще один элемент, не имеющий сведений о строке.It then adds another element that does not have line information. Затем он выводит сведения о строке для каждого элемента дерева.It then prints the line information for each element in the tree.

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  

В этом примере выводятся следующие данные:This example produces the following output:

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-дереве как есть.If you preserve white space when loading, all insignificant white space in the XML tree is materialized in the XML tree as is. Если пробелы не сохраняются, все незначащие пробелы отбрасываются.If you do not preserve white space, then all insignificant white space is discarded.

При установке флагов Сетбасеури и использовании SetLineInfo возникает снижение производительности.There is a performance penalty if you set the SetBaseUri and the SetLineInfo flags.

Базовый URI и сведения о строке точные данные сразу после загрузки XML-документа.The base URI and the line information are accurate immediately after loading the XML document. Если изменить дерево XML после загрузки документа, базовый URI и сведения о строке могут быть бессмысленными.If you modify the XML tree after loading the document, the base URI and line information may become meaningless.

Если базовый XmlReader URI или сведения о строке отсутствуют в базовом коде, установка флагов сетбасеури и использовании SetLineInfo не будет оказывать никакого влияния.If the underlying XmlReader does not have base URI or line information, setting the SetBaseUri and the SetLineInfo flags will have no effect.

Этот тип позволяет контролировать, как LINQ to XML обрабатывает пробел при загрузке или синтаксическом анализе.This type allows you to control how LINQ to XML handles white space when loading or parsing. Дополнительные сведения см. в разделе Сохранение пробелов при загрузке или АНАЛИЗЕ XML и Сохранение пробелов при сериализации.For more information, see Preserve white space while loading or parsing XML and Preserve white space while serializing.

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

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