![]() |
MSXML: umlaute als entites abspeichern
hi ihr,
ich habe einen string mit umlauten. diesen string möchte ich mithilfe von MSXML in meiner XML-datei speichern. mein xml-dokument ist UTF8-kodiert, weshalb msxml die umlaute auch brav als UTF8 abspeichert. ich muss allerdings trotzdem die entities speichern... :? ein StringReplace vorher ützt nichts, da das &-zeichen des entities beim abspeichern in & umgewandelt wird.... habt ihr einen tipp für mich wie ich, trotz UTF8-kodiertem dokument, umlaute als entities speichern kann? danke, aeno |
Re: MSXML: umlaute als entites abspeichern
Wozu braucht man zu Zeiten von Unicode noch diese ¨-Dingsens?
Würde mich nicht wundern, wenn MSXML in den neueren Versionen nur in einem altertümlichen ANSI XML File diesen Krempel anlegt. ;) Welche Anwendung verhält sich denn so eklig, dass sie noch die encodierten Umlaute braucht? Vllt kann man ja an der Seite schrauben um die Ursache anstatt der Symptome zu bekämpfen. ;) |
Re: MSXML: umlaute als entites abspeichern
Zitat:
ich habe grad erfahren, dass es irgendetwas wie disable-output-encoding="yes" für XSL gibt.... vielleicht kann ich das irgendwie ja bei meinem problem verwenden. damit soll er nämlich den string so reinschreiben, wie ich ihm das sage. aeno |
Re: MSXML: umlaute als entites abspeichern
mahlzeit,
da ich mal vor einem ähnlichen problem stand hab ich selbst dafür gesorgt das der widestring ordentlich in utf8 codiert wird. und zwar kannst du dafür:
Delphi-Quellcode:
bzw.
Node.text := UTF8Encode(Value);
Delphi-Quellcode:
verwenden. dann wird zwar aus E:\äöüß@áè ein E:\äöüß@áè aber sowohl der IE6 als auch FF 1.5 zeigen es korekt an.
if Assigned(Node) then
result := UTF8Decode(Node.text); |
Re: MSXML: umlaute als entites abspeichern
Hallo Steffen,
Zitat:
Code:
Je nach Inhalt deines Dokumentes musst du noch eine Anpassung machen. Oder du triffst bereits im IXMLDOMDocument Vorsorge, indem du dort eine XML-Deklaration mit der oben genannten Kodierung angibst:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="html" version="4.0" encoding="US-ASCII"/> <xsl:template match="/ | @* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"> <xsl:sort select="@titel"/> </xsl:apply-templates> </xsl:copy> </xsl:template> </xsl:stylesheet>
Code:
In Verbindung mit einer DOCTYPE Anweisung können HTML Entities dann auch durch den MSXML Parser durchgeschleust werden, ohne dass sie verändert werden:
<?xml version="1.0" encoding="US-ASCII"?>
Code:
In der Datei html.dtd solltest du dann die gewünschten entities definieren:
<!DOCTYPE html SYSTEM "html.dtd">
Code:
Wenn du aber Sonderzeichen in die Textknoten eingetragen hast und absolut HTML character entities gespeichert werden müssen, dann wirst du auf die Methode save() von IXMLDOMDocument verzichten und den wenig eleganten Weg über StringReplace() gehen müssen.
<!ENTITY ouml "ö">
Zitat:
Grüße vom marabu |
Re: MSXML: umlaute als entites abspeichern
hallo ihr,
danke für die vielen antworten :) ich habe mich jetzt für den weniger eleganten aber unkomplizierteren weg entschieden: das ganze manuell mit StringReplace abarbeiten und selber speichern. funktioniert ganz prima so... aeno |
Re: MSXML: umlaute als entites abspeichern
Zitat:
|
Re: MSXML: umlaute als entites abspeichern
Zitat:
außerdem wäre das egal, da es sich bei diesen XML-dateien um eine art projektdatei für ein firmeninternes programm handelt. diese dateien geraten niemals an die öffentlichkeit, weshalb wir uns hierbei um kompatibilität keine sorgen machen müssen ;) |
Re: MSXML: umlaute als entites abspeichern
Zitat:
Zitat:
|
Re: MSXML: umlaute als entites abspeichern
also der IE hat keine probleme damit (die entities sind von HTML geborgt und in usnerer DTD definiert).
es klappt alles wie gewünscht ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz