Lim inn F# til venstre og klikk på "Konverter" — vi gjør det om til XMLLim inn F#-kode

Hva verktøyet gjør

Skriver du F# og jobber i nærheten av .NET XML-config, WCF-contracts eller et SOAP-endpoint, kjenner du allerede smerten: record-typene dine er rene og uttrykksfulle, men å klappe sammen XML-en som matcher dem for hånd, er en slitasje. Lim inn F# her og få velformet XML tilbake i én runde — én enkelt record, en utfylt let-binding, eller en hel modul med nestede records.

Konverteren kjenner de F#-finurlighetene du faktisk bryr deg om. En option<string> som holder Some "x" blir til et vanlig element; None blir til et tomt element i stedet for å forsvinne, slik at XML-formen holder seg forutsigbar. decimal-literaler (249.99m) mister suffikset. list, seq og arrays blir til container-elementer med ett barn per item — tilsvarende det System.Xml.Serialization slenger ut under panseret når du round-tripper via .NET.

Discriminated unions håndteres med sunn fornuft — case-navnet lander som element-tag og payloaden blir til child-elementer. Nestede records foldes ut inline, tuple-felt kommer ut som søskenelementer, og Map<K,V> blir til <Entry><Key/><Value/></Entry>-par. For attributtdrevet tilpasning ([<XmlElement>], [<XmlAttribute>]) — se F#-dokumentasjonen om .NET-interop. Konverteren respekterer dem når de er til stede.

Slik bruker du det

Tre steg. Funker likt uansett om du limer inn en én-linjes record eller en hel modul.

1

Lim inn F#-en din (eller prøv eksemplet)

Slipp F#-en inn som den er i venstre editor. En record type, en utfylt let-binding, flere records, eller en discriminated union — alt går. Klikk Last inn eksempel først for et realistisk case.

Du trenger ikke å fjerne open-statements eller rydde opp i F#-syntaksen. La koden stå slik den ser ut i Rider eller VS Code. Bare lim inn.

2

Trykk Konverter

Klikk på den grønne Konverter-knappen. Verktøyet parser recordene, går gjennom den utfylte verdien, og bygger XML-en i ett jafs. En kort loading-indikator vises mens det kjører.

3

Kopier XML-en

Høyre panel fylles med innrykket, velformet XML som enhver standardkonform parser vil godta. Lim det rett inn i app.config, en SOAP-fixture, en XmlSerializer-round-trip-test, eller dokumentasjonen din.

Når det faktisk kommer godt med

.NET XML-konfigfiler

En F#-record som modellerer en app.config- / web.config-seksjon blir til en redigerbar XML-mal — ingen flere håndskrevne angle brackets.

WCF- og SOAP-fixtures

Du har en F#-record som speiler en WCF-data-contract. Lim inn, hent SOAP-formet body, slang inn i SoapUI eller Postman.

Fable-interop med legacy-XML-endpoints

Bruker du Fable for å snakke med et eldre XML-API? Lim inn den delte F#-recorden og få XML-bodyen backenden din forventer, med option-felt håndtert riktig.

Testdata for XmlSerializer

Generer XML-seed-data som round-tripper via <code>XmlSerializer&lt;T&gt;</code> uten overraskelser — nyttig for integrasjonstester, mock-servere og regresjonssuiter.

Vanlige spørsmål

Kan jeg lime inn flere records samtidig?

Ja — lim inn en hel modul. Hver record type kommer gjennom med nestede records foldet ut og typedefinisjoner kjedet med and håndtert. Discriminated-union-cases beholder case-navnet som element-tag.

Hvordan håndteres option, None og defaults?

En option<string> med Some "x" blir til et vanlig element som inneholder teksten. None blir til et tomt element slik at formen holder seg stabil — du mister ikke felter mellom utfylte og tomme records. voption oppfører seg likt.

Hva med decimal, DateTime, Guid og de plagsomme typene?

Desimaler (249.99m) mister suffikset og blir til ren numerisk tekst. DateTime, DateTimeOffset og TimeSpan blir til ISO-8601-strenger. Guid forblir i det kanoniske 8-4-4-4-12 hex-formatet. byte[] blir til base64-tekst — tilsvarende oppførselen til XmlSerializer.

Virker discriminated unions?

Ja. En DU som type Status = Active | Suspended of reason: string sender ut <Active/> for det nullære caset og <Suspended><reason>...</reason></Suspended> for payload-caset. Case-navnet lander som element-tag — som oftest det du vil ha for XML som matcher et skjema.

Blir koden min lagret?

Koden din sendes til backenden for konvertering og lagres ikke — vi logger ikke payloaden. Er F#-en din sensitiv (interne contracts, API-nøkler i literaler), se over den før du limer inn.

Hva om F#-en bruker computation expressions eller active patterns?

De produserer ikke XML-felt — det er control-flow-konstruksjoner, ikke data. Vi ser på record-typedefinisjonene og den utfylte instansen, så en async { ... } eller et banana-clip-pattern-match blir ignorert. Fiks åpenbare syntaksfeil først, slik at parseren har noe rent å tygge på.

Andre verktøy du kanskje trenger

F# til XML er én bit. Disse passer godt sammen med det: