LoadOptions Enum

Definition

指定剖析 XML 時的載入選項。Specifies load options when parsing XML.

This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
type LoadOptions = 
Public Enum LoadOptions
Inheritance
LoadOptions
Attributes

Fields

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.

Examples

這個範例會從檔案載入小型 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  

Remarks

如果您在載入時保留空白字元,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.

Applies to

See also