Muszę zapisać jeden plik XmlDocument
do pliku z odpowiednim wcięciem (Formatting.Indented)
, ale niektóre węzły z ich dziećmi muszą znajdować się w jednej linii (Formatting.None)
.Jak zapisać XmlDocument z wieloma ustawieniami wcięć?
Jak to osiągnąć od XmlTextWriter
zaakceptować ustawienie całego dokumentu?
Edit po resposne @Ahmad Mageed za:
ja nie wiedziałem, że XmlTextWriter ustawień mogą być modyfikowane podczas pisania. To dobra wiadomość.
Teraz ja ratuję xmlDocument (który jest już wypełniony węzłów, być specyficzna jest .xaml strona) w ten sposób:
XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
xmlDocument.WriteTo(writer);
writer.Flush();
writer.Close();
Umożliwia wcięcia we wszystkich węzłach, oczywiście. Muszę wyłączyć wcięcia w przypadku obsługi wszystkich węzłów <Run>
.
W twoim przykładzie piszesz do XmlTextWriter "ręcznie". Czy istnieje prosty sposób na przeszukiwanie wszystkich węzłów XmlDocument i zapisywanie ich w XmlTextWriter, aby wykrywać węzły <Run>
? Czy muszę napisać jakąś metodę rekursywną, która trafi do każdego dziecka obecnego węzła?
@shg: Widziałem swoją odpowiedź. Czy LINQ to XML jest opcją? Lub ściśle .NET 2.0? BTW powinieneś edytować swoje pytanie i opublikować ten kod, zamiast zamieszczać go jako odpowiedź, aby wszystko było w jednym miejscu, aby inni mogli go zobaczyć, ponieważ jest to dodatkowe informacje na twoje pytanie. Możesz edytować ten, a następnie usunąć inny wpis. –
@Ahmad Mageed: Nigdy wcześniej nie korzystałem z LINQ do XML, ale jest to opcja. Dzięki za podpowiedź. Przyjrzę mu się bliżej. BTW Dokonałem edycji, którą zasugerowałeś. Jestem nowy w zamieszczaniu pytań na temat stackoverflow, więc przepraszam za bałagan. – shg