Mam taki ciąg XML:
<?xml version='1.0'?><response><error code='1'> Success</error></response>
Nie ma linii między jednym elementem a drugim, dlatego jest bardzo trudny do odczytania. Chcę funkcji, która formatuje powyższy ciąg:
<?xml version='1.0'?>
<response>
<error code='1'> Success</error>
</response>
Bez uciekania się do ręcznego pisania funkcji formatu, czy jest jakaś biblioteka .Net lub fragment kodu, którego mogę użyć od ręki?
c#
xml
formatting
Graviton
źródło
źródło
XmlDocument
która zdyskwalifikuje najwyższą głosowaną odpowiedź na to pytanie.Odpowiedzi:
Użyj
XmlTextWriter
...źródło
Będziesz musiał jakoś przeanalizować zawartość ... Uważam, że użycie LINQ jest najłatwiejszym sposobem na zrobienie tego. Znowu wszystko zależy od twojego dokładnego scenariusza. Oto działający przykład użycia LINQ do sformatowania wejściowego ciągu XML.
[używanie oświadczeń jest pomijane ze względu na zwięzłość]
źródło
doc.Declaration.ToString() + doc.ToString()
lub używającdoc.Save
zamiastdoc.ToString
. Zobacz ten link, aby uzyskać więcej informacji.Ten od kristopherjohnson jest o wiele lepszy:
Mniej linii kodu
źródło
<?xml version="1.0" encoding="UTF-8" ?>
linii na górze) i działało dobrze.Proste rozwiązanie, które działa dla mnie:
źródło
Sprawdź poniższy link:
Jak ładnie wydrukować XML(Niestety, łącze zwraca teraz 404 :()Metoda w linku przyjmuje ciąg XML jako argument i zwraca poprawnie sformułowany (z wcięciem) ciąg XML.
Właśnie skopiowałem przykładowy kod z linku, aby ta odpowiedź była bardziej wszechstronna i wygodna.
źródło
<?xml...?>
linii. Ta odpowiedź zawiera to, co pierwotnie miałem na myśli. Jedynym minusem byłoby to, że wolałbym tabulatory niż spacje używane natywnie. UstawiłemIndentation = 1
iIndentChar = '\t'
otrzymałem dokładnie to, czego chciałem.(this String XML)
działa świetnie.Próbowałem:
działa dobrze, zgodnie z oczekiwaniami.
źródło
.NET 2.0 ignoruje rozpoznawanie nazw, z odpowiednim usuwaniem zasobów, wcięciami, zachowywaniem białych znaków i niestandardowym kodowaniem :
Stosowanie:
źródło
jeśli załadujesz XMLDoc, jestem prawie pewien, że funkcja .ToString () ma w tym celu przeciążenie.
Ale czy to służy do debugowania? Powodem, dla którego jest wysyłany w ten sposób, jest to, że zajmuje mniej miejsca (tj. Usuwanie niepotrzebnych białych znaków z XML).
źródło
Konfigurowalne wyjście Pretty XML z deklaracją XML UTF-8
Poniższa definicja klasy zawiera prostą metodę konwersji wejściowego ciągu XML na sformatowany wyjściowy kod XML z deklaracją xml jako UTF-8. Obsługuje wszystkie opcje konfiguracji, które oferuje klasa XmlWriterSettings .
Możliwości dalszej poprawy: -
GetPrettyXml(XmlDocument doc, XmlWriterSettings settings)
Można utworzyć dodatkową metodę, która pozwoli wywołującemu dostosować dane wyjściowe.GetPrettyXml(String rawXml)
Można dodać dodatkową metodę, która obsługuje analizowanie nieprzetworzonego tekstu, zamiast używać klienta XmlDocument. W moim przypadku musiałem manipulować XML za pomocą XmlDocument, dlatego nie dodałem tego.Stosowanie:
źródło