Avatar billede thomasabcd Nybegynder
20. februar 2006 - 23:51 Der er 11 kommentarer og
1 løsning

Vise XML inkl. markup i C#-applikation

Hej.

Jeg kalder en webservice fra en C# app. Når der opstår en fejl i min webservice, smider webservicen en soap-exception. Jeg har tilføjet så meget information i "details" af soap-exceptionen som muligt om de exceptions, der forårsagede fejlen. Jeg vil gerne have skrevet denne XML "pænt" ud i min c#-app (inkl. markup). Dvs. at den skal rykke ind ved nye noder etc. Fuldstændigt som når man åbner noget XML i en webbrowser. Hvordan gøres dette ? Som det er nu, er XMLen fra soap-exceptionen én lang streng a la : ""<detail><HelpLink xmlns=\"http://tempuri.org/\"></HelpLink><Message xmlns=\"http://tempuri.org/\">Error</Message><Source xmlns=\"http://tempuri.org/\">App_Code.bxbjp0kk</Source><StackTrace xmlns=\"http://tempuri.org/\">  at IncomingServer.Handle(Mail m) in c:\\WebSites\\mail\\App_Code\\incomingserver.cs:line 117\n  at IncomingWS.HandleMail(Mail m, String userName, String password) in c:\\WebSites\\mail\\App_Code\\WebServices\\IncomingWS.cs:line 38</StackTrace><InnerException xmlns=\"http://tempuri.org/\"><HelpLink></HelpLink><Message>Big error</Message><Source></Source><StackTrace></StackTrace><InnerException><HelpLink></HelpLink><Message>Biggest error</Message><Source>App_Code.bxbjp0kk</Source><StackTrace>  at SignInDataAccess.SignIn(Int32 userID, String Name) in c:\\WebSites\\mail\\App_Code\\SignInDataAccess.cs:line 63</StackTrace><InnerException /></InnerException></InnerException></detail>""
Avatar billede aaberg Nybegynder
21. februar 2006 - 08:45 #1
Du kan jo f.eks. gemme xmlen i en fil, og åbne det i browseren!

Nedenstående kode åbner en xml fil i det program der som standard er sat op til at åbne xml filer.

System.Diagnostics.Process.Start("c:\\test\\filnavn.xml");
Avatar billede aaberg Nybegynder
21. februar 2006 - 08:50 #2
Nedenstående kode åbner altid ie.

System.Diagnostics.Process.Start("explorer.exe","c:\\test\\filnavn.xml");
Avatar billede nielle Nybegynder
21. februar 2006 - 16:50 #3
Hvis du bruger VS 2005 kan du indsætte en WebBrowser kontrol i din form. Derefter kan du loade XML-koden ind i den med kommandoen:

this.webBrowser1.Url = new Uri(@"C:\Source.Net20\e689661wf\XMLFile1.xml");
Avatar billede thomasabcd Nybegynder
21. februar 2006 - 17:41 #4
Det skal fungere i min eksisterende app, så det er ikke en mulighed at åbne det i en ny browser, så jeg hælder mest til nielles forslag. Nielle, er det muligt at loade XMLen ind i den "integrerede" webbrowser-kontrol uden at gemme den til en fil ? Jeg får den fra en soap-exception, så jeg vil gerne læse den direkte derfra fremfor først at gemme den til en fil, og så læse filen
Avatar billede nielle Nybegynder
21. februar 2006 - 18:08 #5
Det så lidt lovende ud med:

this.webBrowser1.DocumentText = "<detail><HelpLink xmlns=\"http://tempuri.org/\"></HelpLink><Message xmlns=\"http://tempuri.org/\">Error</Message><Source xmlns=\"http://tempuri.org/\">App_Code.bxbjp0kk</Source><StackTrace xmlns=\"http://tempuri.org/\">  at IncomingServer.Handle(Mail m) in c:\\WebSites\\mail\\App_Code\\incomingserver.cs:line 117\n  at IncomingWS.HandleMail(Mail m, String userName, String password) in c:\\WebSites\\mail\\App_Code\\WebServices\\IncomingWS.cs:line 38</StackTrace><InnerException xmlns=\"http://tempuri.org/\"><HelpLink></HelpLink><Message>Big error</Message><Source></Source><StackTrace></StackTrace><InnerException><HelpLink></HelpLink><Message>Biggest error</Message><Source>App_Code.bxbjp0kk</Source><StackTrace>  at SignInDataAccess.SignIn(Int32 userID, String Name) in c:\\WebSites\\mail\\App_Code\\SignInDataAccess.cs:line 63</StackTrace><InnerException /></InnerException></InnerException></detail>";

- men den nægter at vise markup koden.

Måske kan du simpelthen oprette en midlertidig XML-fil, gemme error-beskeden i denne, og så loade denne som vist i
Avatar billede nielle Nybegynder
21. februar 2006 - 18:09 #6
... i det foregående.
Avatar billede nielle Nybegynder
27. februar 2006 - 18:07 #7
Er du kommet videre?
Avatar billede thomasabcd Nybegynder
27. februar 2006 - 19:45 #8
Hej.

Jeg er kommet en smule videre. Jeg har istedet lavet en replace : minXmlStreng.Replace("><", ">\r\n<"). Herved indsætter jeg linieskift hver gang to markups støder "mod" hinanden. Det er ikke helt iøjet, men nok den bedste løsning for mig p.t. Du skal dog have mange tak for dit forslag
Avatar billede nielle Nybegynder
27. februar 2006 - 19:55 #9
Fordelen ved at bruge webBrowser-kontrollen er at du får de små krydser med sådan at du kan kollapse og ekspandere dine nodes.
Avatar billede nielle Nybegynder
06. marts 2006 - 18:32 #10
Hvad med noget respons?
Avatar billede thomasabcd Nybegynder
10. marts 2006 - 00:19 #11
Hej Nielle, undskyld den lange latenstid - har haft meget travlt. Mit behov bliver fint dækket af den løsning, jeg fandt med at bruge Replace. Lukker derfor spm
Avatar billede nielle Nybegynder
10. marts 2006 - 06:51 #12
Fint nok, men: Du har ikke lukket spørgsmålet før at svaret også er accepteret :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester