Udostępnij za pośrednictwem


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 prowadzą do IEnumerable<T> z XElement lub IEnumerable<T> z XAttribute. Kolekcje obiektów XElement lub XAttribute można przekazywać 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>, kolekcja w obiekcie jest wyliczana, a wszystkie elementy w kolekcji są dodawane. Jeśli kolekcja zawiera obiekty XNode 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ść jest null, nic nie zostanie dodane. Podczas przekazywania kolekcji, elementy tej kolekcji mogą być null. Element null w kolekcji nie ma wpływu na drzewo.

Dodany atrybut musi mieć unikatową nazwę w obrębie elementu, który go zawiera.

Podczas dodawania obiektów XNode 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ż przypisana jako element nadrzędny i jest częścią innego drzewa XML, wówczas nowa zawartość jest klonowana, a nowo sklonowana zawartość jest dołączana 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 XDocument. Zamiast tego można zwykle tworzyć drzewa XML za pomocą węzła głównego XElement. 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 obiekt XDocumentType. 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 XElement lub XDocument:

Metoda Opis
XElement Tworzy XElement.
XDocument Tworzy XDocument.
Add Dodaje na końcu zawartości podrzędnej XElement lub XDocument.
AddAfterSelf Dodaje zawartość po XNode.
AddBeforeSelf Dodaje zawartość przed 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) XElement.
ReplaceAttributes Zastępuje atrybuty obiektu XElement.
ReplaceNodes Zastępuje węzły podrzędne nową zawartością.
ReplaceWith Zastępuje węzeł nową zawartością.

Zobacz też