Om jag försöker göra Tack för svaret. Detta: Nu är inte <test>&</test> den slutgiltiga lösningen utan bara ett sätt att enkelt beskriva problemet. Vad jag vill göra är att transformera data från en serversida via xslt och XmlHttp till ett GUI. Eftersom datan är från en datakälla kan jag inte styra vilka tecken som kommer att skickas. Du löste ju det ovan genom att göra <b>transformera data från en serversida</b> Ok. Tack för era svar. Nu förstår jag. Om man gör som ni skriver ordnas problemet med specialtecken automatiskt. &-tecken i XMLdokument
XmlDocument xml = new XmlDocument();
xml.LoadXml("<?xml version=\"1.0\" ?><test>&</test>");
kastar programmet ett XmlException.
Finns det något smidigt sätt att komma förbi det här problemet?
Sv:&-tecken i XMLdokument
Jag löste det genom att göra
str = Regex.Replace(strName.Name, "&", "&");
str = Regex.Replace(str, "<", "<");
str = Regex.Replace(str, ">", ">");
str = Regex.Replace(str, "\"", """);
str = Regex.Replace(str, "'", "'");
Funderar bara på om detta är prestandanedsättande då man måste parsa varje sträng man ska lägg in i xmldokumentet. Hade hoppats på att man kunde ange någon doc-type eller nått som accepterade dessa tecken.
Sv: &-tecken i XMLdokument
<test>&</test>
är per definition INTE XML,
så nej du kan inte på något sätt använda &-tecken på detta sätt i XML.
Du borde klaga på den som har gjort dokumentet från början.Sv:&-tecken i XMLdokument
Du får gärna utveckla och berätta vad som krävs för att det ska bli "ritkig" xml för det har jag inte koll på. Sv: &-tecken i XMLdokument
str = Regex.Replace(str, "&", "&");
Vad jag menar är att att du ska inte behöva Replace om det är XML,
eftersom "&" i ett XML-element *måste* skrivas som "&"
(annars är det inte XML)
Men kan du inte styra det så måste du göra Replace på det här sättet.
Problemet är att om den på ett ställe är korrekt, alltså det står "&"
så kommer du med din replace att få "&amp;".Sv: &-tecken i XMLdokument
Om det är text som ser ut som det du beskriver i första exemplet är det ett fel i servern. Det är som Ola Lindfeldt säger, servern retunerar inte XML.
Om det rör sig om html du vill transformer bör som sagt göra om det till giltlig XML först. HTML är inte XML.
Om du konstruerar xml data själv bör du använder XML-Document objektet för att hantera detta:
XmlDocument doc = new XmlDocument();
doc.InsertBefore(doc.CreateXmlDeclaration("1.0", "utf-8", null), doc.DocumentElement);
XmlElement root = doc.CreateElement("test");
XmlText text = doc.CreateTextNode("&><åÅäÄöÖ");
root.AppendChild(text);
doc.AppendChild(root);
doc.Save("test.xml");
Ger:
<?xml version="1.0" encoding="utf-8" ?>
<test>&><åÅäÄöÖ</test>
På så sätt slipper du alla problem med special tecken och tecken kodning för svenska tecken. Allt bara fungerar.
Sv:&-tecken i XMLdokument