2009-12-30 17 views
12

Tworzę format podobny do Xml przy użyciu XmlWriter. Ale na wyjściu znajduje się również informacja o wersji.Usuwanie wersji z pliku xml

<?xml version="1.0" encoding="utf-8"?> 

Nie potrzebuję tego w moim pliku. Jak mogę to zrobić? Czy istnieje sposób, aby usunąć go za pomocą kodu?

+9

Stop! Proszę! Nie twórz "formatów podobnych do XML". Użyj prawdziwego XML. Jeśli jest podobny do XML, to pojawi się inny programista, popatrz na niego, załóżmy, że to XML, a następnie napotkasz problemy, kiedy próbują go sparsować jako XML. (A kiedy użyjesz prawdziwego XML, użycie instrukcji przetwarzania nie będzie problemem, ponieważ podane tam wartości są wartościami domyślnymi, które są przyjmowane, gdy brakuje instrukcji przetwarzania). – Quentin

+2

To jest deklaracja XML wymagana przez specyfikację. Dlaczego chcesz go usunąć? (Deklaracja jest opcjonalna w XML 1.0, ale wymagana w XML 1.1). –

+0

Ponadto informacje, których szukasz, są zawarte w pytaniu _Oprowadzenie instrukcji przetwarzania XML podczas serializacji obiektu_ (http://stackoverflow.com/questions/164585/ omitting-xml-processing-instruction-when-serialization-an-object) –

Odpowiedz

19

użyć ConformanceLevel i OmitXmlDeclaration właściwości. Przykład:

XmlWriter w; 
w.Settings = new XmlWriterSettings(); 
w.Settings.ConformanceLevel = ConformanceLevel.Fragment; 
w.Settings.OmitXmlDeclaration = true; 
+0

dlaczego powinien używać ConformanceLevel działa bez ustawiania w.Settings.ConformanceLevel = ConformanceLevel.Fragment; również. Co to jest ConformanceLevel? – viky

+1

Poziom zgodności 'Fragment' oznacza, że ​​nie piszesz całego dokumentu, piszesz fragment. Dokumentacja mówi, że ustawienie 'OmitXmlDeclaration' na' true' nie będzie miało żadnego efektu, jeśli "ConformanceLevel" jest ustawione na 'Document'. –

+0

Pamiętaj tylko, że nie musisz mieć linii 'w.Settings.ConformanceLevel = ConformanceLevel.Fragment;' Spowoduje to błąd, jeśli użyjesz również 'writer.WriteStartDocument();'. Można argumentować, że i tak nie powinno się go używać w ten sposób, ale działa tak długo, jak pozostawia się go jako 'settings.ConformanceLevel = ConformanceLevel.Auto;'. – Ravendarksky

11

Tworząc XmlWriter, przechodzą przez żądanymi ustawieniami użyciu XmlWriterSettings:

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.OmitXmlDeclaration = true; 

writer = XmlWriter.Create(Console.Out, settings); 

XmlWriterSettings ma inne właściwości, jak również (tiret i więcej).