Platný obsah objektů XElement a XDocument (LINQ to XML)
Tento článek popisuje platné argumenty, které lze předat konstruktorům, a metody, které používáte k přidání obsahu do prvků a dokumentů.
Platné typy pro konstruktor XElement
Dotazy se často vyhodnocují jako IEnumerable<T> z XElement nebo IEnumerable<T> z XAttribute. Kolekce XElement nebo XAttribute objektů můžete předat konstruktoru XElement. Proto je vhodné předat výsledky dotazu jako obsah do metod a konstruktorů, které používáte k naplnění stromů XML.
Při přidávání jednoduchého obsahu lze do této metody předat různé typy, včetně:
- String
- Double
- Single
- Decimal
- Boolean
- DateTime
- TimeSpan
- DateTimeOffset
- Libovolný typ, který implementuje
Object.ToString
. - Libovolný typ, který implementuje IEnumerable<T>.
Při přidávání složitého obsahu je možné této metodě předat různé typy, včetně:
- XObject
- XNode
- XAttribute
- Libovolný typ, který implementuje IEnumerable<T>
Pokud objekt implementuje IEnumerable<T>, kolekce v objektu je vyjmenována a všechny položky v kolekci jsou přidány. Pokud kolekce obsahuje XNode nebo XAttribute objekty, každá položka v kolekci se přidá samostatně. Pokud kolekce obsahuje text (nebo objekty převedené na text), je text v kolekci zřetězen a přidán jako jeden textový uzel.
Pokud je obsah null
, nic se nedá přidat. Při předávání kolekce mohou být položky v kolekci označeny jako null
. Položka null
v kolekci nemá na strom žádný vliv.
Přidaný atribut musí mít jedinečný název v rámci svého obsahujícího prvku.
Při přidávání XNode nebo XAttribute objektů, pokud nový obsah nemá nadřazený, jsou objekty jednoduše připojeny ke stromu XML. Pokud je nový obsah již nadřazený a je součástí jiného stromu XML, nový obsah se naklonuje a nově naklonovaný obsah se připojí ke stromu XML.
Platné typy pro konstruktor XDocument
Do dokumentu nelze přidat atributy a jednoduchý obsah.
Neexistuje mnoho scénářů, které vyžadují, abyste vytvořili XDocument. Místo toho můžete stromy XML obvykle vytvářet pomocí kořenového uzlu XElement. Pokud nemáte konkrétní požadavek na vytvoření dokumentu (například proto, že musíte vytvořit pokyny ke zpracování a komentáře na nejvyšší úrovni nebo musíte podporovat typy dokumentů), je často pohodlnější používat XElement jako kořenový uzel.
Mezi platné typy konstruktoru XDocument patří:
- Nula objektů nebo jeden XDocumentType. Typy dokumentů musí být před prvkem.
- Nula nebo jeden prvek.
- Nula nebo více komentářů.
- Nula nebo více pokynů ke zpracování.
- Nula nebo více textových uzlů, které obsahují pouze bílé mezery.
Konstruktory a funkce pro přidání obsahu
Následující metody umožňují přidat podřízený obsah do XElement nebo XDocument:
Metoda | Popis |
---|---|
XElement | Vytvoří XElement. |
XDocument | Vytvoří XDocument. |
Add | Přidá na konec podřízených elementů XElement nebo XDocument. |
AddAfterSelf | Přidá obsah za XNode. |
AddBeforeSelf | Přidá obsah před XNode. |
AddFirst | Přidá obsah na začátek podřízeného obsahu XContainer. |
ReplaceAll | Nahradí veškerý obsah (podřízené uzly a atributy) objektu XElement. |
ReplaceAttributes | Nahrazuje atributy objektu XElement. |
ReplaceNodes | Nahradí dětské uzly novým obsahem. |
ReplaceWith | Nahradí uzel novým obsahem. |