Indsæt C# til venstre og klik på "Konverter" — så laver vi det om til XMLIndsæt C#-kode

Hvad værktøjet gør

Hvis du nogensinde har skullet håndlave en XML-payload, der spejler en C#-klasse — til et SOAP-kald, en config-fil, en WCF-kontrakt eller en test fixture — så ved du, hvor meget boilerplate det er. Indsæt C#-koden her, og du får velformet XML tilbage i én omgang. En enkelt object initializer, en hel modelfil med flere klasser eller noget dybt nestet — samme resultat: et komplet XML-dokument med hver property bevaret.

Det er ikke bare dum string-replace. Converteren ved, hvordan C# faktisk serialiserer til XML: decimal-suffikser som 49.99m taber m, DateTime og DateTimeOffset kommer ud som ISO-8601-strings, Guid bliver en standard 8-4-4-4-12 hex-string, nullables med null-værdi bliver tomme elementer, og collections følger samme form, som XmlSerializer ville producere — hver List<T> bliver et container-element med ét barn pr. item, navngivet efter elementtypen.

Serialiseringsattributter bliver også respekteret. [XmlRoot("x")] omdøber rodelementet, [XmlElement("x")] et barn, [XmlAttribute("x")] udsender propertyen som attribut i stedet for element, og [XmlIgnore] smider den ud. [DataMember(Name="x")]DataContract-klasser virker på samme måde. Indsætter du flere klasser, kommer hver ud i outputtet med nestede typer foldet ud og nedarvede properties taget med. Intet forsvinder stille.

Sådan bruger du det

Tre trin. Virker ens, uanset om du indsætter fem linjer eller en hel modelfil.

1

Indsæt din C# (eller prøv eksemplet)

Smid din C# ind i venstre editor, som den er. En object initializer, en fuld klassedefinition, flere klasser eller nestede typer — alt virker. Klik Indlæs eksempel, hvis du vil se et realistisk eksempel først.

Du behøver ikke at strippe kommentarer, fjerne attributter eller rydde op i C#-syntaksen. Lad koden stå, som den ser ud i din IDE. Bare indsæt.

2

Tryk Konverter

Klik på den grønne Konverter-knap. Værktøjet læser C#-koden, bevarer hver klasse og property og bygger XML:en i ét hug. Du ser en kort loading-indikator, mens det kører.

3

Kopier XML-en

Højre panel fyldes med indrykket, velformet XML, som enhver standardkompatibel XML-parser vil acceptere. Kopier den direkte ind i din SOAP-request, config-fil, test fixture eller dokumentation.

Hvornår det faktisk er nyttigt

Bygge SOAP- / WCF-fixtures

Du har en C#-request-kontrakt og skal bruge en XML-body til at putte i SoapUI eller Postman. Indsæt klassen, tag XML:en, videre.

Starte config-filer

En Settings-klasse med 40 properties bliver til en klar-til-redigering XML-skabelon til app.config, web.config eller en hvilken som helst XML-baseret config store — ingen håndskrevet boilerplate.

Holde dokumentationen i sync

Generer XML-eksempler til en README, API-reference eller XSD-baseret skema-dokumentation direkte fra dine faktiske modeller, så docs matcher koden.

Seede testdata

Lav object initializers fra dine unit-tests om til XML-seed-filer til integrationstests, mockservere eller legacy-systemer, der stadig taler XML.

Typiske spørgsmål

Kan jeg indsætte flere klasser på én gang?

Ja — indsæt en hel fil. Hver top-level-klasse kommer ud med nestede typer foldet ud og nedarvede properties fra baseklasser inkluderet. Intet bliver droppet.

Respekterer den attributter som [XmlElement], [XmlAttribute] og [XmlIgnore]?

Ja. [XmlRoot("x")] omdøber rodelementet, [XmlElement("x")] et barn, [XmlAttribute("x")] udsender propertyen som attribut på parenten, og [XmlIgnore] fjerner den helt. [DataMember(Name="x")]DataContract-klasser omdøber også elementet. Det matcher det, XmlSerializer ville gøre.

Hvordan håndterer den decimal, DateTime, Guid og nullables?

Decimals (49.99m) taber suffikset og bliver ren numerisk tekst. DateTime og DateTimeOffset kommer ud som ISO-8601-strings. Guid er en standard 8-4-4-4-12 hex-string. TimeSpan bliver en ISO-8601-varighed eller HH:mm:ss. Nullables med null-værdi bliver tomme elementer i stedet for at blive droppet — så formen forbliver konsistent.

Hvad med nestede klasser, lister og dictionaries?

List<T>, arrays, HashSet<T> og IEnumerable<T> bliver alle til container-elementer med ét barn pr. item, navngivet efter elementtypen — en List<OrderItem> Items bliver <Items><OrderItem/><OrderItem/></Items>. Dictionary<K,V> bliver en container af <Entry><Key/><Value/></Entry>. Nestede object initializers foldes ud som nestede elementer med hvert felt intakt.

Bliver min kode gemt?

Din kode sendes til backenden for konvertering og bliver ikke gemt — vi logger ikke payloaden. Som altid med online-værktøjer: er koden reelt sensitiv, så kig den igennem først.

Hvad hvis C#-koden har noget usædvanligt — metoder, delegater, IntPtr?

Den slags kommer ud som tomme elementer i stedet for at vælte hele konverteringen, så resten af din model kommer stadig igennem. Har selve koden syntaksfejl, så fix de åbenlyse først — parseren er tilgivende, men ikke magisk.

Andre værktøjer du måske får brug for

C# til XML er én brik i puslespillet. Her er værktøjerne, der passer godt sammen med det: