Поделиться через


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

Обновлен: November 2007

В этом разделе представлен класс XDocument.

Общие сведения о классе 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. Комментарии и корневой элемент находятся на одном уровне. Объект XComment не может быть первым аргументом в списке, так как XML-документ не может начинаться с комментария.

  • Один тип документа 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.-->

См. также

Основные понятия

Общие сведения о программирования LINQ to XML