Prawidłowa zawartość obiektów XElement i XDocument (LINQ to XML)

W tym artykule opisano prawidłowe argumenty, które można przekazać do konstruktorów, oraz metody używane do dodawania zawartości do elementów i dokumentów.

Prawidłowe typy konstruktora XElement

Zapytania często oceniają wartość IEnumerable<T> lub IEnumerable<T>XElement .XAttribute Kolekcje XElement obiektów lub XAttribute można przekazać do konstruktora XElement . Dlatego wygodne jest przekazywanie wyników zapytania jako zawartości do metod i konstruktorów używanych do wypełniania drzew XML.

Podczas dodawania prostej zawartości można przekazać różne typy do tej metody, w tym::

Podczas dodawania złożonej zawartości do tej metody można przekazać różne typy, w tym:

Jeśli obiekt implementuje IEnumerable<T>element , kolekcja w obiekcie jest wyliczana, a wszystkie elementy w kolekcji są dodawane. Jeśli kolekcja zawiera XNode obiekty lub XAttribute , każdy element w kolekcji jest dodawany oddzielnie. Jeśli kolekcja zawiera tekst (lub obiekty, które są konwertowane na tekst), tekst w kolekcji jest połączony i dodawany jako pojedynczy węzeł tekstowy.

Jeśli zawartość to null, nic nie zostanie dodane. Podczas przekazywania kolekcji elementy w kolekcji mogą mieć wartość null. Element null w kolekcji nie ma wpływu na drzewo.

Dodany atrybut musi mieć unikatową nazwę w obrębie jego elementu zawierającego.

W przypadku dodawania XNode obiektów lub XAttribute , jeśli nowa zawartość nie ma elementu nadrzędnego, obiekty są po prostu dołączone do drzewa XML. Jeśli nowa zawartość jest już nadrzędna i jest częścią innego drzewa XML, nowa zawartość jest klonowana, a nowo sklonowana zawartość jest dołączona do drzewa XML.

Prawidłowe typy konstruktora XDocument

Atrybuty i prosta zawartość nie mogą być dodawane do dokumentu.

Nie ma wielu scenariuszy, które wymagają utworzenia elementu XDocument. Zamiast tego można zwykle tworzyć drzewa XML za pomocą węzła XElement głównego. Jeśli nie masz określonego wymagania dotyczącego tworzenia dokumentu (na przykład dlatego, że musisz utworzyć instrukcje przetwarzania i komentarze na najwyższym poziomie lub musisz obsługiwać typy dokumentów), często wygodniejsze jest użycie XElement jako węzła głównego.

Prawidłowe typy konstruktora XDocument obejmują następujące elementy:

  • Zero lub jeden XDocumentType obiekt. Typy dokumentów muszą znajdować się przed elementem.
  • Zero lub jeden element.
  • Zero lub więcej komentarzy.
  • Zero lub więcej instrukcji przetwarzania.
  • Zero lub więcej węzłów tekstowych, które zawierają tylko białe znaki.

Konstruktory i funkcje służące do dodawania zawartości

Następujące metody umożliwiają dodawanie zawartości podrzędnej do obiektu XElement lub :XDocument

Metoda opis
XElement Konstruuje element XElement.
XDocument Tworzy element XDocument.
Add Dodaje na końcu zawartości podrzędnej obiektu XElement lub XDocument.
AddAfterSelf Dodaje zawartość po pliku XNode.
AddBeforeSelf Dodaje zawartość przed elementem XNode.
AddFirst Dodaje zawartość na początku zawartości podrzędnej elementu XContainer.
ReplaceAll Zastępuje całą zawartość (węzły podrzędne i atrybuty) elementu XElement.
ReplaceAttributes Zastępuje atrybuty elementu XElement.
ReplaceNodes Zastępuje węzły podrzędne nową zawartością.
ReplaceWith Zastępuje węzeł nową zawartością.

Zobacz też