使用Python,尝试使用十六进制编码的html转义字符保存xml文件

使用Python,尝试使用十六进制编码的html转义字符保存xml文件,python,xml,python-2.7,hex,ascii,Python,Xml,Python 2.7,Hex,Ascii,我正在使用ElementTree。我有一个解析过的xml文档,如下所示: <data> <name> <slash>/</slash> </name> </data> 您可以使用编解码器模块(包含在python中) 这应该返回f 您可以使用编解码器模块(包含在python中) 这应该返回f 使用lxml: x = """<data> <name>

我正在使用ElementTree。我有一个解析过的xml文档,如下所示:

<data>
    <name>
        <slash>/</slash>
    </name>
</data>

您可以使用编解码器模块(包含在python中)


这应该返回f

您可以使用编解码器模块(包含在python中)

这应该返回f

使用lxml:

x = """<data>
    <name>
        <slash>/</slash>
    </name>
</data>"""
import lxml.etree as et

xml_doc = et.fromstring(x)
for node in xml_doc.xpath("//*[contains(text(), '/')]"):
    node.text = node.text.replace("/","&#x2f;")



print(et.tostring(xml_doc))
要写入文件,请使用lxml覆盖这两个部分。

x = """<data>
    <name>
        <slash>/</slash>
    </name>
</data>"""
import lxml.etree as et

xml_doc = et.fromstring(x)
for node in xml_doc.xpath("//*[contains(text(), '/')]"):
    node.text = node.text.replace("/","&#x2f;")



print(et.tostring(xml_doc))
要写入文件,请同时覆盖这两个部分

import codecs

def returnHex(input):
    hexitup = codecs.getencoder('hex')
    return ("&#" + hexitup(input)[0]+";")

print(returnHex('/'))
x = """<data>
    <name>
        <slash>/</slash>
    </name>
</data>"""
import lxml.etree as et

xml_doc = et.fromstring(x)
for node in xml_doc.xpath("//*[contains(text(), '/')]"):
    node.text = node.text.replace("/","&#x2f;")



print(et.tostring(xml_doc))
<data>
    <name>
        <slash>&amp;#x2f;</slash>
    </name>
</data>
from xml.etree import ElementTree  as et

xml_doc = et.fromstring(x)
for node in xml_doc.iter("*"):
    if "/" in node.text:
        node.text = node.text.replace("/","&#x2f;")