/
LoadOptions.xml
329 lines (307 loc) · 15 KB
/
LoadOptions.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
<Type Name="LoadOptions" FullName="System.Xml.Linq.LoadOptions">
<TypeSignature Language="C#" Value="public enum LoadOptions" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi sealed LoadOptions extends System.Enum" />
<TypeSignature Language="DocId" Value="T:System.Xml.Linq.LoadOptions" />
<TypeSignature Language="VB.NET" Value="Public Enum LoadOptions" />
<TypeSignature Language="F#" Value="type LoadOptions = " />
<TypeSignature Language="C++ CLI" Value="public enum class LoadOptions" />
<AssemblyInfo>
<AssemblyName>System.Xml.XDocument</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.1.1.0</AssemblyVersion>
<AssemblyVersion>4.1.2.0</AssemblyVersion>
<AssemblyVersion>5.0.0.0</AssemblyVersion>
<AssemblyVersion>6.0.0.0</AssemblyVersion>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<AssemblyVersion>8.0.0.0</AssemblyVersion>
<AssemblyVersion>9.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>System.Xml.Linq</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>3.5.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<TypeForwardingChain>
<TypeForwarding From="System.Xml.Linq" FromVersion="4.0.0.0" To="System.Xml.XDocument" ToVersion="0.0.0.0" FrameworkAlternate="dotnet-uwp-10.0" />
<TypeForwarding From="netstandard" FromVersion="2.1.0.0" To="System.Xml.XDocument" ToVersion="5.0.0.0" FrameworkAlternate="net-5.0" />
<TypeForwarding From="netstandard" FromVersion="2.1.0.0" To="System.Xml.XDocument" ToVersion="6.0.0.0" FrameworkAlternate="net-6.0" />
<TypeForwarding From="netstandard" FromVersion="2.1.0.0" To="System.Xml.XDocument" ToVersion="7.0.0.0" FrameworkAlternate="net-7.0" />
<TypeForwarding From="netstandard" FromVersion="2.1.0.0" To="System.Xml.XDocument" ToVersion="8.0.0.0" FrameworkAlternate="net-8.0" />
<TypeForwarding From="netstandard" FromVersion="2.1.0.0" To="System.Xml.XDocument" ToVersion="9.0.0.0" FrameworkAlternate="net-9.0" />
</TypeForwardingChain>
<Base>
<BaseTypeName>System.Enum</BaseTypeName>
</Base>
<Attributes>
<Attribute>
<AttributeName Language="C#">[System.Flags]</AttributeName>
<AttributeName Language="F#">[<System.Flags>]</AttributeName>
</Attribute>
</Attributes>
<Docs>
<summary>Specifies load options when parsing XML.</summary>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
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.
There is a performance penalty if you set the SetBaseUri and the SetLineInfo flags.
The base URI and the line information are accurate immediately after loading the XML document. If you modify the XML tree after loading the document, the base URI and line information may become meaningless.
If the underlying <xref:System.Xml.XmlReader> does not have base URI or line information, setting the SetBaseUri and the SetLineInfo flags will have no effect.
This type allows you to control how LINQ to XML handles white space when loading or parsing. For more information, see [Preserve white space while loading or parsing XML](/dotnet/standard/linq/preserve-white-space-loading-parsing-xml) and [Preserve white space while serializing](/dotnet/standard/linq/preserve-white-space-serializing).
## Examples
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.
```csharp
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");
```
```vb
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
```
]]></format>
</remarks>
<altmember cref="T:System.Xml.Linq.SaveOptions" />
<related type="Article" href="/dotnet/standard/linq/linq-xml-overview">LINQ to XML overview</related>
<related type="Article" href="/dotnet/standard/linq/program-nodes">Programming with nodes</related>
</Docs>
<Members>
<Member MemberName="None">
<MemberSignature Language="C#" Value="None" />
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype System.Xml.Linq.LoadOptions None = int32(0)" />
<MemberSignature Language="DocId" Value="F:System.Xml.Linq.LoadOptions.None" />
<MemberSignature Language="VB.NET" Value="None" />
<MemberSignature Language="F#" Value="None = 0" Usage="System.Xml.Linq.LoadOptions.None" />
<MemberSignature Language="C++ CLI" Value="None" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyName>System.Xml.XDocument</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.1.1.0</AssemblyVersion>
<AssemblyVersion>4.1.2.0</AssemblyVersion>
<AssemblyVersion>5.0.0.0</AssemblyVersion>
<AssemblyVersion>6.0.0.0</AssemblyVersion>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<AssemblyVersion>8.0.0.0</AssemblyVersion>
<AssemblyVersion>9.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>System.Xml.Linq</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>3.5.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Xml.Linq.LoadOptions</ReturnType>
</ReturnValue>
<MemberValue>0</MemberValue>
<Docs>
<summary>Does not preserve insignificant white space or load base URI and line information.</summary>
</Docs>
</Member>
<Member MemberName="PreserveWhitespace">
<MemberSignature Language="C#" Value="PreserveWhitespace" />
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype System.Xml.Linq.LoadOptions PreserveWhitespace = int32(1)" />
<MemberSignature Language="DocId" Value="F:System.Xml.Linq.LoadOptions.PreserveWhitespace" />
<MemberSignature Language="VB.NET" Value="PreserveWhitespace" />
<MemberSignature Language="F#" Value="PreserveWhitespace = 1" Usage="System.Xml.Linq.LoadOptions.PreserveWhitespace" />
<MemberSignature Language="C++ CLI" Value="PreserveWhitespace" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyName>System.Xml.XDocument</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.1.1.0</AssemblyVersion>
<AssemblyVersion>4.1.2.0</AssemblyVersion>
<AssemblyVersion>5.0.0.0</AssemblyVersion>
<AssemblyVersion>6.0.0.0</AssemblyVersion>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<AssemblyVersion>8.0.0.0</AssemblyVersion>
<AssemblyVersion>9.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>System.Xml.Linq</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>3.5.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Xml.Linq.LoadOptions</ReturnType>
</ReturnValue>
<MemberValue>1</MemberValue>
<Docs>
<summary>Preserves insignificant white space while parsing.</summary>
</Docs>
</Member>
<Member MemberName="SetBaseUri">
<MemberSignature Language="C#" Value="SetBaseUri" />
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype System.Xml.Linq.LoadOptions SetBaseUri = int32(2)" />
<MemberSignature Language="DocId" Value="F:System.Xml.Linq.LoadOptions.SetBaseUri" />
<MemberSignature Language="VB.NET" Value="SetBaseUri" />
<MemberSignature Language="F#" Value="SetBaseUri = 2" Usage="System.Xml.Linq.LoadOptions.SetBaseUri" />
<MemberSignature Language="C++ CLI" Value="SetBaseUri" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyName>System.Xml.XDocument</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.1.1.0</AssemblyVersion>
<AssemblyVersion>4.1.2.0</AssemblyVersion>
<AssemblyVersion>5.0.0.0</AssemblyVersion>
<AssemblyVersion>6.0.0.0</AssemblyVersion>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<AssemblyVersion>8.0.0.0</AssemblyVersion>
<AssemblyVersion>9.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>System.Xml.Linq</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>3.5.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Xml.Linq.LoadOptions</ReturnType>
</ReturnValue>
<MemberValue>2</MemberValue>
<Docs>
<summary>Requests the base URI information from the <see cref="T:System.Xml.XmlReader" />, and makes it available via the <see cref="P:System.Xml.Linq.XObject.BaseUri" /> property.</summary>
</Docs>
</Member>
<Member MemberName="SetLineInfo">
<MemberSignature Language="C#" Value="SetLineInfo" />
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype System.Xml.Linq.LoadOptions SetLineInfo = int32(4)" />
<MemberSignature Language="DocId" Value="F:System.Xml.Linq.LoadOptions.SetLineInfo" />
<MemberSignature Language="VB.NET" Value="SetLineInfo" />
<MemberSignature Language="F#" Value="SetLineInfo = 4" Usage="System.Xml.Linq.LoadOptions.SetLineInfo" />
<MemberSignature Language="C++ CLI" Value="SetLineInfo" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyName>System.Xml.XDocument</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.10.0</AssemblyVersion>
<AssemblyVersion>4.1.0.0</AssemblyVersion>
<AssemblyVersion>4.1.1.0</AssemblyVersion>
<AssemblyVersion>4.1.2.0</AssemblyVersion>
<AssemblyVersion>5.0.0.0</AssemblyVersion>
<AssemblyVersion>6.0.0.0</AssemblyVersion>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<AssemblyVersion>8.0.0.0</AssemblyVersion>
<AssemblyVersion>9.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>System.Xml.Linq</AssemblyName>
<AssemblyVersion>2.0.5.0</AssemblyVersion>
<AssemblyVersion>3.5.0.0</AssemblyVersion>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<AssemblyInfo>
<AssemblyName>netstandard</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<AssemblyVersion>2.1.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Xml.Linq.LoadOptions</ReturnType>
</ReturnValue>
<MemberValue>4</MemberValue>
<Docs>
<summary>Requests the line information from the <see cref="T:System.Xml.XmlReader" /> and makes it available via properties on <see cref="T:System.Xml.Linq.XObject" />.</summary>
</Docs>
</Member>
</Members>
</Type>