for index in rootless:
if rootless[index] is not None:
rootless[index] = "<![CDATA[" + str(rootless[index]) + "]]>"
params_xml = xmltodict.unparse(rootless)尝试在解析前添加到数组,但它转义了特殊的char结果
<city><![CDATA[new york]]></city><state><![CDATA[NY]]></state><zip><![CDATA[10036]]></zip><phone></phone>
我要找的是
<city><![CDATA[new york]]></city><state><![CDATA[NY]]></state><zip><![CDATA[10036]]></zip><phone></phone>
从技术上讲,我可以将>和</正则表达式转换为上面的文本,但可能有更好的方法
无根的看起来像这样
{
"city": "new york",
"state": "NY",
"zip": 10036,
"phone": ""
}发布于 2020-06-11 04:47:54
这里有一种方法可以让你正确地插入CDATA,而不需要深入了解字典的结构等。
假设您的NYC地址和xml如下所示:
nyc = ["New York", "NY","10036"]
my_xml ="""<entry><city></city><state></state><zip></zip></entry>"""在这种情况下,您需要:
from lxml import etree
doc = etree.fromstring(my_xml)
for a, b in zip(nyc,doc.xpath('/entry/*')):
b.text = etree.CDATA(a)
etree.tostring(doc).decode())编辑:
items = {
"city": "new york",
"state": "NY",
"zip": 10036,
"phone": ""
}
my_xml ="""<entry><city></city><state></state><zip></zip><phone></phone></entry>"""
doc = etree.fromstring(my_xml)
for a, b in zip(list(items.values()),doc.xpath('/entry/*')):
b.text = etree.CDATA(str(a))
print(etree.tostring(doc).decode())输出:
<entry><city><![CDATA[new york]]></city><state><![CDATA[NY]]></state><zip><![CDATA[10036]]></zip><phone><![CDATA[]]></phone></entry>https://stackoverflow.com/questions/62311299
复制相似问题