Sdílet prostřednictvím


Zachování prázdného místa při načítání nebo analýze XML (LINQ to XML)

Tento článek popisuje, jak řídit chování prázdných znaků LINQ to XML.

Běžným scénářem je čtení odsazení XML, vytvoření stromu XML v paměti bez prázdných textových uzlů (tj. nezachovávání prázdných znaků), provádění některých operací s XML a následné uložení XML s odsazením. Při serializaci XML s formátováním se zachovají pouze významné prázdné znaky ve stromu XML. Toto je výchozí chování linQ to XML.

Dalším běžným scénářem je čtení a úpravy XML, které už byly záměrně odsazené. Toto odsazení možná nebudete chtít žádným způsobem změnit. Chcete-li to provést v LINQ to XML, zachováte prázdné znaky při načtení nebo parsování XML a zakázání formátování při serializaci XML.

Tento článek popisuje chování prázdných znaků metod, které naplňují stromy XML. Informace o řízení prázdných znaků při serializaci stromů XML naleznete v tématu Zachování prázdných znaků při serializaci.

Chování metod, které naplňují stromy XML

Následující metody ve stromové XElement struktuře XML a XDocument třídy naplňují. Strom XML můžete naplnit ze souboru, znaku TextReader, XmlReadernebo řetězce:

Pokud metoda nezabere LoadOptions jako argument, metoda nezachová nevýznamné prázdné znaky.

Ve většině případů, pokud metoda přebírá LoadOptions jako argument, můžete volitelně zachovat nevýznamné prázdné znaky jako textové uzly ve stromu XML. Nicméně, pokud metoda načítá XML z XmlReader, pak XmlReader určuje, zda prázdné znaky budou zachovány, nebo ne. Nastavení PreserveWhitespace nebude mít žádný vliv.

S těmito metodami, pokud je prázdné znaky zachovány, nevýznamné prázdné znaky se vloží do stromu XML jako XText uzly. Pokud prázdné znaky nezachovají, textové uzly se nevloží.

Strom XML můžete vytvořit pomocí objektu XmlWriter. Uzly, které jsou zapsány do stromu XmlWriter , jsou naplněny ve stromu. Pokud však pomocí této metody vytvoříte strom XML, zachovají se všechny uzly bez ohledu na to, jestli je uzel prázdný nebo ne, nebo jestli je prázdné znaky významné nebo ne.