Udostępnij za pośrednictwem


XDocument, klasa — przegląd

Klasa XDocument zawiera informacje niezbędne do prawidłowego dokumentu XML, który zawiera deklarację XML, instrukcje przetwarzania i komentarze.

Musisz utworzyć XDocument obiekty tylko wtedy, gdy potrzebujesz określonych funkcji udostępnianych przez klasę XDocument . W wielu okolicznościach możesz pracować bezpośrednio z usługą XElement. Praca bezpośrednio z XElement programem to prostszy model programowania.

XDocument element pochodzi z XContainerklasy , aby mógł zawierać węzły podrzędne. XDocument Jednak obiekty mogą mieć tylko jeden węzeł podrzędnyXElement. Odzwierciedla to standard XML, który może zawierać tylko jeden element główny w dokumencie XML.

Składniki narzędzia XDocument

Element XDocument może zawierać następujące elementy:

  • Jeden XDeclaration obiekt. XDeclaration Umożliwia określenie odpowiednich części deklaracji XML: wersji XML, kodowania dokumentu i tego, czy dokument XML jest autonomiczny.
  • Jeden XElement obiekt. Ten obiekt jest węzłem głównym dokumentu XML.
  • Dowolna XProcessingInstruction liczba obiektów. Instrukcja przetwarzania przekazuje informacje do aplikacji, która przetwarza kod XML.
  • Dowolna XComment liczba obiektów. Komentarze będą elementami równorzędnymi elementu głównego.
  • Jeden XDocumentType dla dtD.

Podczas serializacji XDocument, nawet jeśli XDocument.Declaration jest null, dane wyjściowe będą miały deklarację XML, jeśli składnik zapisywania ma Writer.Settings.OmitXmlDeclaration wartość false (wartość domyślna).

Domyślnie LINQ to XML ustawia wersję na "1.0" i ustawia kodowanie na "utf-8".

Używanie elementu XElement bez elementu XDocument

Jak wspomniano wcześniej, XElement klasa jest główną klasą w interfejsie programowania LINQ to XML. W wielu przypadkach aplikacja nie będzie wymagać utworzenia dokumentu. Korzystając z XElement klasy, można wykonywać następujące czynności:

  • Utwórz drzewo XML.
  • Dodaj do niego inne drzewa XML.
  • Zmodyfikuj drzewo XML.
  • Zapisz go.

Korzystanie z dokumentu XDocument

Aby skonstruować obiekt , należy użyć konstrukcji funkcjonalnej XDocument, tak jak w przypadku konstruowania XElement obiektów.

Poniższy przykład tworzy XDocument obiekt i skojarzone z nim obiekty.

XDocument d = new XDocument(
    new XComment("This is a comment."),
    new XProcessingInstruction("xml-stylesheet",
        "href='mystyle.css' title='Compact' type='text/css'"),
    new XElement("Pubs",
        new XElement("Book",
            new XElement("Title", "Artifacts of Roman Civilization"),
            new XElement("Author", "Moreno, Jordao")
        ),
        new XElement("Book",
            new XElement("Title", "Midieval Tools and Implements"),
            new XElement("Author", "Gazit, Inbar")
        )
    ),
    new XComment("This is another comment.")
);
d.Declaration = new XDeclaration("1.0", "utf-8", "true");
Console.WriteLine(d);

d.Save("test.xml");
Dim doc As XDocument = <?xml version="1.0" encoding="utf-8"?>
                       <!--This is a comment.-->
                       <?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>
                       <Pubs>
                           <Book>
                               <Title>Artifacts of Roman Civilization</Title>
                               <Author>Moreno, Jordao</Author>
                           </Book>
                           <Book>
                               <Title>Midieval Tools and Implements</Title>
                               <Author>Gazit, Inbar</Author>
                           </Book>
                       </Pubs>
                       <!--This is another comment.-->
doc.Save("test.xml")

W przykładzie są generowane następujące dane wyjściowe w test.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--This is a comment.-->
<?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>
<Pubs>
  <Book>
    <Title>Artifacts of Roman Civilization</Title>
    <Author>Moreno, Jordao</Author>
  </Book>
  <Book>
    <Title>Midieval Tools and Implements</Title>
    <Author>Gazit, Inbar</Author>
  </Book>
</Pubs>
<!--This is another comment.-->

Zobacz też