다음을 통해 공유


LoadOptions 열거형

정의

XML을 구문 분석할 때 적용되는 로드 옵션을 지정합니다.

이 열거형은 멤버 값의 비트 조합을 지원합니다.

public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions = 
Public Enum LoadOptions
상속
LoadOptions
특성

필드

None 0

의미 없는 공백을 유지하지 않고 기본 URI 및 줄 정보를 로드하지 않습니다.

PreserveWhitespace 1

구문 분석할 때 의미 없는 공백을 유지합니다.

SetBaseUri 2

XmlReader에서 기본 URI 정보를 요청하고 BaseUri 속성을 통해 사용할 수 있게 합니다.

SetLineInfo 4

XmlReader에서 줄 정보를 XObject의 속성을 통해 사용할 수 있게 합니다.

예제

다음은 파일에서 작은 XML 트리를 로드하여 기본 URI를 설정하고 줄 정보를 유지하는 옵션을 설정하는 예제입니다. 그런 다음 줄 정보가 없는 다른 요소를 추가합니다. 그런 다음 트리의 각 요소에 대한 줄 정보를 인쇄합니다.

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  

이 예제는 다음과 같은 출력을 생성합니다.

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을 로드하거나 구문 분석하는 동안 공백 유지직렬화하는 동안 공백 유지를 참조하세요.

적용 대상

추가 정보