LoadOptions 枚举

定义

指定分析 XML 时的加载选项。

此枚举支持其成员值的按位组合。

C#
[System.Flags]
public enum LoadOptions
继承
LoadOptions
属性

字段

None 0

不保留无关紧要的空白,也不加载基 URI 和行信息。

PreserveWhitespace 1

分析时保留无关紧要的空白。

SetBaseUri 2

XmlReader 请求基 URI 信息,并通过 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 标志,则会出现性能损失。

加载 XML 文档后,基本 URI 和行信息会立即准确。 如果在加载文档后修改 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

另请参阅