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

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 Preserve white space while loading or parsing XML and Preserve white space while serializing.

適用於

另請參閱