Noget i denne stil: xmldocument xd = new xmldocument(); XmlDeclaration xmldecl; xmldecl = xd.CreateXmlDeclaration("1.0", System.Text.Encoding.UTF8.WebName, null); xd.AppendChild(xmldecl); xd.load(dinstreng);
Er ikke sikker på jeg forstår hvad din kode gør dr_chaos. Jeg har nogle indtastningsfelter der bliver indholdet i nogle xml tags i min kode. I disse felter kan brugeren jo' skrive forskellige forbudte tegn. Disse skal så laves lovlige.
Kan jeg lave hele xml teksten 'lovlig' ved at bruge din kode?
Replace virkede ikke helt som jeg havde brugt den, så for god ordens skyld må jeg hellere poste en tilrettet version af min midlertidige løsning.
private string stringToXML(string indputtekst) { string tekst = indputtekst;
tekst = tekst.Replace("&", "&"); tekst = tekst.Replace("<","<"); tekst = tekst.Replace(">", ">"); tekst = tekst.Replace("\"","""); tekst = tekst.Replace("'","'");
Jeg troede at du måske modtog et dokument et andet sted fra. Lige nu har du en string builder som du bruger til at lave xml med. Generelt er det en dum måde at gøre det på. (Det ved du nok godt siden du spørger :) ) jeg vil foreslå at du laver noget i denne stil: xmldocument xd = new xmldocument(); XmlDeclaration xmldecl; //laver en xmldeclaretion som sørge for at encode dokumentet. xmldecl = xd.CreateXmlDeclaration("1.0", System.Text.Encoding.UTF8.WebName, null); xd.AppendChild(xmldecl); /*herefter skal du tilføje dit data til xml dokumentet*/ XmlElement xeFirma = xd.CreateElement("Firma"); xeFirma.AppendChild(xd.CreateElement("description")).InnerText = (firmaRow.Adresse + ", " + firmaRow.Postnummer + " " + firmaRow.By; xeFirma.AppendChild(xd.CreateElement("name")).InnerText = firmaRow.Navn; xd.AppendChild(xeFirma);
På den måde med at opbygge xml dokumentet sikrer du dig at de altid overholder gældende standarder. Du kan sagtens gennemgå f.eks. en arrayliste og lave den omtil xml hvis du vil.
string encoded = System.Web.HttpUtility.UrlEncode(s); // giver dette resultat "b%c3%a6r%26m%c3%a5s" string decoded = System.Web.HttpUtility.UrlDecode(encoded); // giver dette resultat "bær&mås"
Nej hans metode bygge rpå server objektet, hvor min metode bygger på den statiske klasse. Min er ikke htmlencode men UrlEncode som også er tilgængelig i windows applikationer.
Mange tak for de mange forslag. Jeg har desværre møg travlt lige nu, så jeg må vente lidt med at afprøve forslagene.
Jeg skylder nok at forklare hvad jeg bruger det til. Jeg har nogle firmaadresser, som jeg skriver ned i en KML fil, som så loades sammen med Google Earth, så jeg får placeret nogle punkter på kortet.
segato: HtmlEncode er også tilgængelig i windows apps, om end via en lidt længere vej... Selve metoderne HtmlEncode og HtmlDecode skal ikke bruge noget som helst fra en web server for at fungere...
Nej jeg er udemærket klar over det ikke kræver en webserver, din metode er helt fin. Jeg kan bare ikke se grunden til at oprette en instans af server objektet, når man kan anvende den statiske klasse UrlEncode.
Nu er jeg ikke ude efter at tage point da jeg ikke samler, jeg angav blot måde jeg ville løse hans problem på. Du må meget gerne få de points. Den løsning jeg har skitseret vil løse hans problem med en linie kode. Jeg bruger selvsamme løsning til mange xml tranformationer.
Det jo det, det gør :D Og dine nye løsning vil jeg endda mene er den mest elegante af dem alle, og faktisk lidt en blanding af de to ovenstående. Så moralen må være at komunikation fører til den bedste løsning :D
Jeg bruger selv for det meste XmlDocument. Der skal man ikke spekulere på encoding da den selv encoder. Og det med folk der altid laver alt i strenge, det skyldes vist de ikke kender de muligheder der findes.
det var det i den grad også. Tvivler på at virksomheden vil hyre andre konsulenter. Hvis de gør bliver der stillet langt større krav til konsulent og hans måde at løse opgaverne på.
ja og nu var vores konsulent meget lang tid om at lave ingenting og der var lidt for meget pjat. Han havde 26 forskellige funktioner og jeg kunne omskrive det til en dynamisk funktion som ikke var avanceret.
Jeg er også meget enig i at man bør bruge .NETs indbyggede XML framework. Faktisk uanset situationen. Man kan dog få brug for HtmlEncode hvis man skal sætte HTML tegn ind i et XML element.
Det behøver du faktisk ikke. Det er fordelen ved at bruger de inbyggede kontroller. Alt encoding sker automatisk. Et eksempel: StreamReader sr; XmlDocument xd = new XmlDocument(); xd.Load("http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml"); foreach (XmlNode xn in xd.SelectSingleNode("//exchangerates/dailyrates").ChildNodes) {
Den løsning jeg beskrev i starten er grim, men virker, og da jeg har møg travlt med andre ting har jeg desværre ikke fundet tid til at kigge grundigt nok på de forskellige løsninger der er beskrevet i denne tråd.
Jeg håber og satser på at jeg får kigget på det i den nærmeste fremtid...
Synes godt om
Ny brugerNybegynder
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.