XDocument.Load Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy nowy XDocument element z pliku określonego przez identyfikator URI z TextReaderobiektu lub .XmlReader
Przeciążenia
| Nazwa | Opis |
|---|---|
| Load(Stream) |
Tworzy nowe XDocument wystąpienie przy użyciu określonego strumienia. |
| Load(TextReader) |
Tworzy nowy XDocument element na podstawie elementu TextReader. |
| Load(String) |
Tworzy nowy XDocument element na podstawie pliku. |
| Load(XmlReader) |
Tworzy nowy XDocument element na podstawie elementu XmlReader. |
| Load(Stream, LoadOptions) |
Tworzy nowe XDocument wystąpienie przy użyciu określonego strumienia, opcjonalnie zachowując biały znak, ustawiając podstawowy identyfikator URI i zachowując informacje o wierszu. |
| Load(TextReader, LoadOptions) |
Tworzy nowy XDocument element na podstawie TextReaderelementu , opcjonalnie zachowując biały znak, ustawiając podstawowy identyfikator URI i zachowując informacje o wierszu. |
| Load(String, LoadOptions) |
Tworzy nowy XDocument element z pliku, opcjonalnie zachowując biały znak, ustawiając podstawowy identyfikator URI i zachowując informacje o wierszu. |
| Load(XmlReader, LoadOptions) |
Ładuje element XDocument z XmlReaderelementu , opcjonalnie ustawiając podstawowy identyfikator URI i zachowując informacje o wierszu. |
Uwagi
Przy użyciu jednego z przeciążeń tej metody można załadować element XDocument z pliku , TextReaderlub .XmlReader
Aby utworzyć element XDocument na podstawie ciągu zawierającego kod XML, użyj polecenia Parse.
Load(Stream)
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
Tworzy nowe XDocument wystąpienie przy użyciu określonego strumienia.
public:
static System::Xml::Linq::XDocument ^ Load(System::IO::Stream ^ stream);
public static System.Xml.Linq.XDocument Load(System.IO.Stream stream);
static member Load : System.IO.Stream -> System.Xml.Linq.XDocument
Public Shared Function Load (stream As Stream) As XDocument
Parametry
- stream
- Stream
Strumień zawierający dane XML.
Zwraca
XDocument Obiekt, który odczytuje dane zawarte w strumieniu.
Uwagi
Jeśli chcesz kontrolować opcje ładowania, użyj Load przeciążenia, które przyjmuje LoadOptions jako parametr.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.
Jeśli musisz zmodyfikować XmlReaderSettingsprogram , wykonaj następujące kroki:
Utwórz obiekt XmlReader przez wywołanie jednego z Create przeciążeń, które przyjmują XmlReaderSettings jako parametr.
Przekaż wartość XmlReader do jednego z Load przeciążeń XDocument , które przyjmuje XmlReader jako parametr.
Dotyczy
Load(TextReader)
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
Tworzy nowy XDocument element na podstawie elementu TextReader.
public:
static System::Xml::Linq::XDocument ^ Load(System::IO::TextReader ^ textReader);
public static System.Xml.Linq.XDocument Load(System.IO.TextReader textReader);
static member Load : System.IO.TextReader -> System.Xml.Linq.XDocument
Public Shared Function Load (textReader As TextReader) As XDocument
Parametry
- textReader
- TextReader
Element TextReader zawierający zawartość elementu XDocument.
Zwraca
Element XDocument zawierający zawartość określonego TextReaderelementu .
Przykłady
Poniższy przykład tworzy dokument na podstawie elementu StringReader.
TextReader tr = new StringReader("<Root>Content</Root>");
XDocument doc = XDocument.Load(tr);
Console.WriteLine(doc);
Dim tr As TextReader = New StringReader("<Root>Content</Root>")
Dim doc As XDocument = XDocument.Load(tr)
Console.WriteLine(doc)
Ten przykład generuje następujące wyniki:
<Root>Content</Root>
Uwagi
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.
Zobacz też
- Parse
- Save
- WriteTo(XmlWriter)
- Przegląd LINQ to XML
- Wykonywanie zapytań względem elementu XDocument a zapytanie elementu XElement
Dotyczy
Load(String)
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
Tworzy nowy XDocument element na podstawie pliku.
public:
static System::Xml::Linq::XDocument ^ Load(System::String ^ uri);
public static System.Xml.Linq.XDocument Load(string uri);
static member Load : string -> System.Xml.Linq.XDocument
Public Shared Function Load (uri As String) As XDocument
Parametry
- uri
- String
Ciąg identyfikatora URI, który odwołuje się do pliku do załadowania do nowego XDocumentpliku .
Zwraca
Element XDocument zawierający zawartość określonego pliku.
Przykłady
W poniższym przykładzie pokazano, jak załadować element XDocument z pliku.
W tym przykładzie użyto następującego dokumentu XML:
Przykładowy plik XML: typowe zamówienie zakupu (LINQ to XML)
XDocument doc = XDocument.Load("PurchaseOrder.xml");
Console.WriteLine(doc);
Dim doc As XDocument = XDocument.Load("PurchaseOrder.xml")
Console.WriteLine(doc)
Ten przykład generuje następujące wyniki:
<PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">
<Address Type="Shipping">
<Name>Ellen Adams</Name>
<Street>123 Maple Street</Street>
<City>Mill Valley</City>
<State>CA</State>
<Zip>10999</Zip>
<Country>USA</Country>
</Address>
<Address Type="Billing">
<Name>Tai Yee</Name>
<Street>8 Oak Avenue</Street>
<City>Old Town</City>
<State>PA</State>
<Zip>95819</Zip>
<Country>USA</Country>
</Address>
<DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes>
<Items>
<Item PartNumber="872-AA">
<ProductName>Lawnmower</ProductName>
<Quantity>1</Quantity>
<USPrice>148.95</USPrice>
<Comment>Confirm this is electric</Comment>
</Item>
<Item PartNumber="926-AA">
<ProductName>Baby Monitor</ProductName>
<Quantity>2</Quantity>
<USPrice>39.98</USPrice>
<ShipDate>1999-05-21</ShipDate>
</Item>
</Items>
</PurchaseOrder>
Uwagi
Ta metoda używa elementu bazowego XmlReader do odczytywania kodu XML do drzewa XML.
Użyj Parse polecenia , aby utworzyć element XDocument na podstawie ciągu zawierającego kod XML.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.
Zobacz też
- Parse
- Save
- WriteTo(XmlWriter)
- Przegląd LINQ to XML
- Wykonywanie zapytań względem elementu XDocument a zapytanie elementu XElement
Dotyczy
Load(XmlReader)
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
public:
static System::Xml::Linq::XDocument ^ Load(System::Xml::XmlReader ^ reader);
public static System.Xml.Linq.XDocument Load(System.Xml.XmlReader reader);
static member Load : System.Xml.XmlReader -> System.Xml.Linq.XDocument
Public Shared Function Load (reader As XmlReader) As XDocument
Parametry
Zwraca
Element XDocument zawierający zawartość określonego XmlReaderelementu .
Przykłady
Poniższy przykład tworzy dokument DOM, tworzy element XmlNodeReader na podstawie dokumentu DOM, tworzy obiekt XDocument przy użyciu elementu XmlNodeReader.
// Create a DOM document with some content.
XmlDocument doc = new XmlDocument();
XmlElement child = doc.CreateElement("Child");
child.InnerText = "child contents";
XmlElement root = doc.CreateElement("Root");
root.AppendChild(child);
doc.AppendChild(root);
// create a reader and move to the content
using (XmlNodeReader nodeReader = new XmlNodeReader(doc)) {
// the reader must be in the Interactive state in order to
// create a LINQ to XML tree from it.
nodeReader.MoveToContent();
XDocument xRoot = XDocument.Load(nodeReader);
Console.WriteLine(xRoot);
}
' Create a DOM document with some content.
Dim doc As XmlDocument = New XmlDocument()
Dim child As XmlElement = doc.CreateElement("Child")
child.InnerText = "child contents"
Dim root As XmlElement = doc.CreateElement("Root")
root.AppendChild(child)
doc.AppendChild(root)
' create a reader and move to the content
Using nodeReader = New XmlNodeReader(doc)
' the reader must be in the Interactive state in order to
' create a LINQ to XML tree from it.
nodeReader.MoveToContent()
Dim xRoot As XDocument = XDocument.Load(nodeReader)
Console.WriteLine(xRoot)
End Using
Ten przykład generuje następujące wyniki:
<Root>
<Child>child contents</Child>
</Root>
Uwagi
Jedną z możliwych metod jest utworzenie kopii dokumentu DOM w drzewie LINQ to XML. W tym celu utworzysz element XmlNodeReader na podstawie dokumentu DOM, a następnie użyj polecenia , XmlNodeReader aby utworzyć obiekt XDocument.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.
Zobacz też
- Parse
- Save
- WriteTo(XmlWriter)
- Przegląd LINQ to XML
- Wykonywanie zapytań względem elementu XDocument a zapytanie elementu XElement
Dotyczy
Load(Stream, LoadOptions)
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
Tworzy nowe XDocument wystąpienie przy użyciu określonego strumienia, opcjonalnie zachowując biały znak, ustawiając podstawowy identyfikator URI i zachowując informacje o wierszu.
public:
static System::Xml::Linq::XDocument ^ Load(System::IO::Stream ^ stream, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XDocument Load(System.IO.Stream stream, System.Xml.Linq.LoadOptions options);
static member Load : System.IO.Stream * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XDocument
Public Shared Function Load (stream As Stream, options As LoadOptions) As XDocument
Parametry
- stream
- Stream
Strumień zawierający dane XML.
- options
- LoadOptions
Element LoadOptions określający, czy mają być ładowane podstawowe informacje o identyfikatorze URI i wierszu.
Zwraca
XDocument Obiekt, który odczytuje dane zawarte w strumieniu.
Uwagi
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.
Jeśli musisz zmodyfikować XmlReaderSettingsprogram , wykonaj następujące kroki:
Utwórz obiekt XmlReader przez wywołanie jednego z Create przeciążeń, które przyjmuje XmlReaderSettings jako parametr.
Przekaż wartość XmlReader do jednego z Load przeciążeń XDocument , które przyjmuje XmlReader jako parametr.
Dotyczy
Load(TextReader, LoadOptions)
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
Tworzy nowy XDocument element na podstawie TextReaderelementu , opcjonalnie zachowując biały znak, ustawiając podstawowy identyfikator URI i zachowując informacje o wierszu.
public:
static System::Xml::Linq::XDocument ^ Load(System::IO::TextReader ^ textReader, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XDocument Load(System.IO.TextReader textReader, System.Xml.Linq.LoadOptions options);
static member Load : System.IO.TextReader * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XDocument
Public Shared Function Load (textReader As TextReader, options As LoadOptions) As XDocument
Parametry
- textReader
- TextReader
Element TextReader zawierający zawartość elementu XDocument.
- options
- LoadOptions
Element LoadOptions określający zachowanie białych znaków oraz to, czy mają być ładowane podstawowe informacje o identyfikatorze URI i wierszu.
Zwraca
Element XDocument zawierający kod XML, który został odczytany z określonego TextReaderelementu .
Przykłady
Poniższy przykład tworzy dokument na podstawie elementu StringReader.
TextReader sr;
int whiteSpaceNodes;
sr = new StringReader("<Root> <Child> </Child> </Root>");
XDocument xmlTree1 = XDocument.Load(sr, LoadOptions.None);
sr.Close();
whiteSpaceNodes = xmlTree1
.Element("Root")
.DescendantNodesAndSelf()
.OfType<XText>()
.Where(tNode => tNode.ToString().Trim().Length == 0)
.Count();
Console.WriteLine("Count of white space nodes (not preserving whitespace): {0}", whiteSpaceNodes);
sr = new StringReader("<Root> <Child> </Child> </Root>");
XDocument xmlTree2 = XDocument.Load(sr, LoadOptions.PreserveWhitespace);
sr.Close();
whiteSpaceNodes = xmlTree2
.Element("Root")
.DescendantNodesAndSelf()
.OfType<XText>()
.Where(tNode => tNode.ToString().Trim().Length == 0)
.Count();
Console.WriteLine("Count of white space nodes (preserving whitespace): {0}", whiteSpaceNodes);
Dim sr As TextReader
Dim whiteSpaceNodes As Integer
sr = New StringReader("<Root> <Child> </Child> </Root>")
Dim xmlTree1 As XDocument = XDocument.Load(sr, LoadOptions.None)
sr.Close()
whiteSpaceNodes = xmlTree1 _
.Element("Root") _
.DescendantNodesAndSelf() _
.OfType(Of XText)() _
.Where(Function(ByVal tNode As XNode) tNode. _
ToString().Trim().Length = 0).Count()
Console.WriteLine("Count of white space nodes (not preserving whitespace): {0}", whiteSpaceNodes)
sr = New StringReader("<Root> <Child> </Child> </Root>")
Dim xmlTree2 As XDocument = XDocument.Load(sr, LoadOptions.PreserveWhitespace)
sr.Close()
whiteSpaceNodes = xmlTree2 _
.Element("Root") _
.DescendantNodesAndSelf() _
.OfType(Of XText)() _
.Where(Function(ByVal tNode As XNode) tNode. _
ToString().Trim().Length = 0).Count()
Console.WriteLine("Count of white space nodes (preserving whitespace): {0}", whiteSpaceNodes)
Ten przykład generuje następujące wyniki:
Count of white space nodes (not preserving whitespace): 0
Count of white space nodes (preserving whitespace): 3
Uwagi
Jeśli źródłowy kod XML jest wcięcie, ustawienie PreserveWhitespace flagi w options programie powoduje, że czytelnik odczytuje wszystkie białe znaki w źródłowym kodzie XML. Węzły typu XText są tworzone zarówno dla znaczących, jak i nieistotnych białych znaków.
Jeśli źródłowy kod XML jest wcięcie, nie ustawiając PreserveWhitespace flagi w pliku , options czytnik ignoruje wszystkie nieistotne białe znaki w źródłowym formacie XML. Drzewo XML jest tworzone bez żadnych węzłów tekstowych dla nieistotnego odstępu.
Jeśli źródłowy kod XML nie jest wcięcie, ustawienie flagi w PreserveWhitespace elemecie options nie ma żadnego efektu. Znaczne odstępy są nadal zachowywane i nie ma nieistotnych odstępów, które mogłyby spowodować utworzenie większej liczby białych węzłów tekstowych.
Aby uzyskać więcej informacji, zobacz Zachowywanie odstępu podczas ładowania lub analizowania kodu XML i Zachowywanie odstępu podczas serializacji.
Użyj Parse polecenia , aby utworzyć element XElement na podstawie ciągu zawierającego kod XML.
Ustawienie SetBaseUri jest nieprawidłowe podczas ładowania z elementu TextReader.
W przypadku ustawienia flagi SetLineInfo występuje kara za wydajność.
Informacje o wierszu są dokładne natychmiast po załadowaniu dokumentu XML. Jeśli po załadowaniu dokumentu zmodyfikujesz drzewo XML, informacje o wierszu mogą stać się bezużyteczne.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.
Zobacz też
- Parse
- Save
- WriteTo(XmlWriter)
- Przegląd LINQ to XML
- Wykonywanie zapytań względem elementu XDocument a zapytanie elementu XElement
Dotyczy
Load(String, LoadOptions)
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
Tworzy nowy XDocument element z pliku, opcjonalnie zachowując biały znak, ustawiając podstawowy identyfikator URI i zachowując informacje o wierszu.
public:
static System::Xml::Linq::XDocument ^ Load(System::String ^ uri, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XDocument Load(string uri, System.Xml.Linq.LoadOptions options);
static member Load : string * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XDocument
Public Shared Function Load (uri As String, options As LoadOptions) As XDocument
Parametry
- uri
- String
Ciąg identyfikatora URI, który odwołuje się do pliku do załadowania do nowego XDocumentpliku .
- options
- LoadOptions
Element LoadOptions określający zachowanie białych znaków oraz to, czy mają być ładowane podstawowe informacje o identyfikatorze URI i wierszu.
Zwraca
Element XDocument zawierający zawartość określonego pliku.
Przykłady
W poniższym przykładzie pokazano, jak załadować element XDocument z pliku.
W tym przykładzie użyto następującego dokumentu XML:
Przykładowy plik XML: typowe zamówienie zakupu (LINQ to XML)
XDocument doc1 = XDocument.Load("PurchaseOrder.xml", LoadOptions.None);
Console.WriteLine("nodes if not preserving whitespace: {0}", doc1.DescendantNodes().Count());
XDocument doc2 = XDocument.Load("PurchaseOrder.xml", LoadOptions.PreserveWhitespace);
Console.WriteLine("nodes if preserving whitespace: {0}", doc2.DescendantNodes().Count());
Dim doc1 As XDocument = XDocument.Load("PurchaseOrder.xml", LoadOptions.None)
Console.WriteLine("nodes if not preserving whitespace: {0}", doc1.DescendantNodes().Count())
Dim doc2 As XDocument = XDocument.Load("PurchaseOrder.xml", LoadOptions.PreserveWhitespace)
Console.WriteLine("nodes if preserving whitespace: {0}", doc2.DescendantNodes().Count())
Ten przykład generuje następujące wyniki:
nodes if not preserving whitespace: 48
nodes if preserving whitespace: 82
Uwagi
Jeśli źródłowy kod XML jest wcięcie, ustawienie PreserveWhitespace flagi w options programie powoduje, że czytelnik odczytuje wszystkie białe znaki w źródłowym kodzie XML. Węzły typu XText są tworzone zarówno dla znaczących, jak i nieistotnych białych znaków.
Jeśli źródłowy kod XML jest wcięcie, nie ustawiając PreserveWhitespace flagi w pliku , options czytnik ignoruje wszystkie nieistotne białe znaki w źródłowym formacie XML. Drzewo XML jest tworzone bez żadnych węzłów tekstowych dla nieistotnego odstępu.
Jeśli źródłowy kod XML nie jest wcięcie, ustawienie flagi w PreserveWhitespace elemecie options nie ma żadnego efektu. Znaczne odstępy są nadal zachowywane i nie ma nieistotnych odstępów, które mogłyby spowodować utworzenie większej liczby białych węzłów tekstowych.
Aby uzyskać więcej informacji, zobacz Zachowywanie odstępu podczas ładowania lub analizowania kodu XML i Zachowywanie odstępu podczas serializacji.
Użyj Parse polecenia , aby utworzyć element XDocument na podstawie ciągu zawierającego kod XML.
Jeśli ustawisz flagi SetBaseUri i, SetLineInfo zostanie ustawiona kara za wydajność.
Podstawowy identyfikator URI i informacje o wierszu są dokładne natychmiast po załadowaniu dokumentu XML. Jeśli po załadowaniu dokumentu zmodyfikujesz drzewo XML, podstawowy identyfikator URI i informacje o wierszu mogą stać się bezużyteczne.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.
Zobacz też
- Parse
- Save
- WriteTo(XmlWriter)
- Przegląd LINQ to XML
- Wykonywanie zapytań względem elementu XDocument a zapytanie elementu XElement
Dotyczy
Load(XmlReader, LoadOptions)
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
- Źródło:
- XDocument.cs
public:
static System::Xml::Linq::XDocument ^ Load(System::Xml::XmlReader ^ reader, System::Xml::Linq::LoadOptions options);
public static System.Xml.Linq.XDocument Load(System.Xml.XmlReader reader, System.Xml.Linq.LoadOptions options);
static member Load : System.Xml.XmlReader * System.Xml.Linq.LoadOptions -> System.Xml.Linq.XDocument
Public Shared Function Load (reader As XmlReader, options As LoadOptions) As XDocument
Parametry
- reader
- XmlReader
Element XmlReader , który będzie odczytywany pod kątem zawartości elementu XDocument.
- options
- LoadOptions
Element LoadOptions określający, czy mają być ładowane podstawowe informacje o identyfikatorze URI i wierszu.
Zwraca
Element XDocument zawierający kod XML, który został odczytany z określonego XmlReaderelementu .
Przykłady
Poniższy przykład ładuje informacje o wierszu ładowane z elementu XmlReader. Następnie wyświetla informacje o wierszu.
string markup =
@"<Root>
<Child>
<GrandChild/>
</Child>
</Root>";
// Create a reader and move to the content.
using (XmlReader nodeReader = XmlReader.Create(new StringReader(markup)))
{
// the reader must be in the Interactive state in order to
// Create a LINQ to XML tree from it.
nodeReader.MoveToContent();
XDocument xRoot = XDocument.Load(nodeReader, LoadOptions.SetLineInfo);
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 xRoot.Elements("Root").DescendantsAndSelf())
Console.WriteLine("{0}{1}{2}",
("".PadRight(e.Ancestors().Count() * 2) + e.Name).PadRight(20),
((IXmlLineInfo)e).LineNumber.ToString().PadRight(5),
((IXmlLineInfo)e).LinePosition);
}
Dim markup As String = _
"<Root>" & Environment.NewLine & _
" <Child>" & Environment.NewLine & _
" <GrandChild/>" & Environment.NewLine & _
" </Child>" & Environment.NewLine & _
"</Root>"
' Create a reader and move to the content.
Using nodeReader As XmlReader = XmlReader.Create(New StringReader(markup))
' The reader must be in the Interactive state in order to
' create a LINQ to XML tree from it.
nodeReader.MoveToContent()
Dim xRoot As XDocument = XDocument.Load(nodeReader, LoadOptions.SetLineInfo)
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 xRoot.Elements("Root").DescendantsAndSelf()
Console.WriteLine("{0}{1}{2}", _
("".PadRight(e.Ancestors().Count() * 2) & e.Name.ToString()).PadRight(20), _
(DirectCast(e, IXmlLineInfo)).LineNumber.ToString().PadRight(5), _
(DirectCast(e, IXmlLineInfo)).LinePosition)
Next
End Using
Ten przykład generuje następujące wyniki:
Element Name Line Position
------------ ---- --------
Root 1 2
Child 2 6
GrandChild 3 10
Uwagi
Tworząc element XmlNodeReader na podstawie dokumentu DOM, a następnie używając XmlNodeReader elementu w celu utworzenia XElementobiektu , można użyć tej metody do utworzenia kopii dokumentu DOM w drzewie LINQ to XML.
Użyj Parse polecenia , aby utworzyć element XDocument na podstawie ciągu zawierającego kod XML.
Ustawienie PreserveWhitespace jest nieprawidłowe podczas ładowania z elementu XmlReader. Zostanie XmlReader skonfigurowany do odczytu białych znaków lub nie. Drzewo LINQ to XML zostanie wypełnione węzłami białych znaków, które mają powierzchnie czytnika. Będzie to zachowanie niezależnie od tego, czy PreserveWhitespace jest ustawiona, czy nie.
Może XmlReader mieć prawidłowy podstawowy identyfikator URI lub nie. Jeśli ustawisz SetBaseUriwartość , podstawowy identyfikator URI zostanie ustawiony w drzewie XML z podstawowego identyfikatora URI zgłoszonego przez element XmlReader.
Element XmlReader może zawierać prawidłowe informacje o wierszu. Jeśli ustawisz SetLineInfowartość , informacje o wierszu zostaną ustawione w drzewie XML z informacji o wierszu zgłaszanych przez element XmlReader.
W przypadku ustawienia flagi SetLineInfo występuje kara za wydajność.
Informacje o wierszu są dokładne natychmiast po załadowaniu dokumentu XML. Jeśli po załadowaniu dokumentu zmodyfikujesz drzewo XML, informacje o wierszu mogą stać się bezużyteczne.
Funkcja ładowania LINQ to XML jest oparta na .XmlReader W związku z tym można przechwytywać wszelkie wyjątki, które są zgłaszane przez XmlReader.Create metody przeciążenia i XmlReader metody odczytujące i analizowane dokumentu.