L'échappement de chaînes pour une utilisation en XML
Je suis en utilisant Python xml.dom.minidom
pour créer un document XML. (Structure logique -> XML chaîne, et non l'inverse.)
Comment puis-je faire échapper les chaînes-je fournir pour ne pas être en mesure de gâcher le XML?
- Toute XML DOM serialiser va caractère d'échappement données de façon appropriée comme il va... qu'est ce que la manipulation DOM est pour, pour vous éviter d'avoir à se salir les mains avec le balisage.
Vous devez vous connecter pour publier un commentaire.
Voulez-vous dire que vous faites quelque chose comme cela:
Ensuite, vous aurez bien échappé à la chaîne XML:
Quelque chose comme cela?
xml.sax.saxutils.escape
s'échappe uniquement&
,<
, et>
par défaut, mais cela donne uneentities
paramètre de plus échapper à d'autres chaînes:xml.sax.saxutils.escape
utilisestr.replace()
en interne, de sorte que vous pouvez également passer à l'importation et à écrire votre propre fonction, comme illustré dans MichealMoser de réponse.xml.sax.saxutils n'échappe pas à la citation de caractères (")
Donc, ici, est un autre:
si vous regardez vers le haut puis xml.sax.saxutils seulement de la chaîne de remplacer
str
que votre nom de variable.str = str.replace("'", "'")
.str = str.replace("\"", """)
eststr = str.replace('"', """)
, qui est plus lisible, je pense que la barre oblique inverse (\) semble juste de sortir de la place pour moi.Si vous ne voulez pas un autre projet de l'importation et vous avez déjà
cgi
, vous pouvez utiliser ceci:Toutefois, de noter qu'avec ce code de lisibilité souffre - vous devriez le mettre dans une fonction afin de mieux décrire votre intention: (et écrire des tests unitaires pour elle pendant que vous y êtes 😉