Общие сведения о классе XDocument

Класс XDocument содержит сведения, необходимые для допустимого XML-документа, который включает объявление XML, инструкции по обработке и комментарии.

Создавать объекты XDocument необходимо только в том случае, если требуется определенная функциональность, предоставляемая классом XDocument. Во многих случаях вы можете работать непосредственно с XElement. Работа непосредственно с XElement — это более простая модель программирования.

XDocument производный от XContainer, поэтому он может содержать дочерние узлы. XDocument Однако объекты могут иметь только один дочерний XElement узел. Это отражает стандарт XML, в соответствии с которым в XML-документе может быть только один корневой элемент.

Компоненты XDocument

Может XDocument содержать следующие элементы:

  • Один XDeclaration объект. XDeclaration позволяет указать соответствующие части объявления XML: XML-версию, кодировку документа и автономный XML-документ.
  • Один XElement объект. Этот объект является корневым узлом XML-документа.
  • Любое количество XProcessingInstruction объектов. Инструкция обработки передает сведения приложению, обрабатывающего XML.
  • Любое количество XComment объектов. Комментарии будут находиться на одном уровне с корневым элементом.
  • Один XDocumentType для DTD.

При сериализации XDocument, даже если XDocument.Declaration это null, выходные данные будут иметь XML-объявление, если Writer.Settings.OmitXmlDeclaration установлен в false (по умолчанию).

По умолчанию LINQ to XML задает версию "1.0" и задает кодировку "utf-8".

Использование XElement без XDocument

Как упоминалось ранее, XElement класс является основным классом в интерфейсе программирования LINQ to XML. Во многих случаях вам не потребуется создавать документ в вашем приложении. С помощью XElement класса можно:

  • Создайте XML-дерево.
  • Добавьте в него другие деревья XML.
  • Измените XML-дерево.
  • Сохраните его.

Использование XDocument

Чтобы создать XDocument, используйте функциональное построение, как и для создания объектов XElement.

В следующем примере создаётся объект XDocument и связанные с ним объекты.

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")

В этом примере выводятся следующие данные в 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.-->

См. также