LoadOptions 枚举

定义

指定分析 XML 时的加载选项。Specifies load options when parsing XML.

此枚举有一个 FlagsAttribute 属性,允许按位组合成员值。

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
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

XmlReader 请求基 URI 信息,并通过 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.

如果设置了 SetBaseUri 和 SetLineInfo 标志, 则会对性能产生负面影响。There is a performance penalty if you set the SetBaseUri and the SetLineInfo flags.

在加载 XML 文档后, 基本 URI 和行信息立即准确无误。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 或行信息, 则设置 SetBaseUri 和 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 Preserving White Space while Loading or Parsing XML and Preserving White Space While Serializing.

适用于

另请参阅