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

2024-03-29 12:56:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我想能够保存它使用一个十六进制代码的html转义字符。在

由于“/”的hex code是2F,所以我希望将xml保存为:

^{pr2}$

Python的方法是什么?理想情况下,我希望这样做:

import xml.etree.ElementTree as ET

xml_doc = ET.tostring(source,method="xml")

xml_doc=change_to_html_hex_code(xml_doc)

out_file = open("output.xml",'w')
out_file.write(xml_doc)

Tags: 代码name文档datadochtmlcodexml
2条回答

使用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))

这会给你:

^{pr2}$

或xml:

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;")

要写入文件,this answer同时包含这两个内容。

您可以使用codecs模块(包括在python中)

import codecs

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

print(returnHex('/'))

这将返回&;2f

相关问题 更多 >