LoadOptions 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
XML을 구문 분석할 때 적용되는 로드 옵션을 지정합니다.
이 열거형은 멤버 값의 비트 조합을 지원합니다.
public enum class LoadOptions
[System.Flags]
public enum LoadOptions
[<System.Flags>]
type LoadOptions =
Public Enum LoadOptions
- 상속
- 특성
필드
None | 0 | 의미 없는 공백을 유지하지 않고 기본 URI 및 줄 정보를 로드하지 않습니다. |
PreserveWhitespace | 1 | 구문 분석할 때 의미 없는 공백을 유지합니다. |
SetBaseUri | 2 | |
SetLineInfo | 4 |
예제
다음은 파일에서 작은 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을 로드하거나 구문 분석하는 동안 공백 유지 및 직렬화하는 동안 공백 유지를 참조하세요.
적용 대상
추가 정보
.NET