python - 转义字符串以在 xml 标记中使用
问题描述
初步:这不是这里已经回答的问题:
实际问题:
我继承了一个 xml 模式,不幸的是,它将 xml 本身的文件名编码为一个元素(我知道,这是非常不寻常的,也不是一个好主意):
<?xml version="1.0" encoding="utf-8"?>
<this_actual_xml_filename.xml>
<content>
</content>
</this_actual_xml_filename.xml>
我知道由于多种原因这不是很有用,但是由于我无法通过在使用该文件的工具上投入大量精力来更改结构,因此我暂时坚持使用它。这不是一个好主意的原因之一是文件名比 xml 元素名称受到的限制要少得多,因此很容易想象会出现问题,例如生成一个名为的 xmlvalid_filename_(but_invalid_xml).xml
会导致这种 xml 格式:
<?xml version="1.0" encoding="utf-8"?>
<valid_filename_(but_invalid_xml).xml>
<content>
</content>
</valid_filename_(but_invalid_xml).xml>
我的问题是,在 Python 中是否有办法转义 xml 元素中不允许的任何字符。以某种透明的方式转义它可以让我在读取 xml 的工具中重建原始文件名。
我可以使用标准推出自己的:https ://www.w3schools.com/xml/xml_elements.asp但我想知道是否有现成的东西来应对这种不寻常的情况。
附录:让我强调一下,这种结构是非常糟糕的风格,强烈建议重构文件格式而不是寻找解决方法。因此,我认为在任何库中都没有针对此问题的现成解决方案,因为构造本身违反了基本的 xml 设计准则。
如果确实存在解决方案,我发布了这个问题,这样我就不必重新发明轮子了。如果没有其他问题,我将接受一个简单的“不存在”作为答案。
解决方案
我见过的一个约定是用十六进制字符代码替换所有“特殊”字符(对于“特殊”_HHHH_
的某些定义)。HHHH
但是我不知道有任何方便的库可以为您执行此操作。并且将元素写出来可能会容易得多
<file name="valid_filename_(but_invalid_xml).xml">
...
</file>
推荐阅读
- python - 尝试覆盖键时引发异常的python字典
- python-3.x - 字符串列表到单词列表
- git - 为什么在我将 svn 存储库转换为 git 存储库后 git describe 总是返回“致命:没有标签可以描述 SHA1”?
- activemq-artemis - 如何将 broker-url 与其参数分开(ActiveMQ Artemis + Spring Boot)
- java - 如何使 System.out.println 仅收集带有子 p 标签的链接?
- apache-kafka - 如何使用状态机通过 MassTransit 将消费者连接到 Kafka 主题
- excel - 搜索字符串后出现的Excel提取值
- python - 下载文件硒python后的陈旧元素
- javascript - 如何使用 jquery 获取动态单选按钮的 id?
- python - 给定 3d 函数上的点 f(x,y,z) 和采样点 x,y 找到函数所在的 z