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.

예제

이 예제에서는 기본 URI를 설정 하 고 줄 정보 유지 옵션을 설정 하 여 파일에서 작은 XML 트리를 로드 합니다.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.

기본 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 또는 줄 정보를 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.

적용 대상

추가 정보