Python xml 创建多个 <br /> 的子元素
我正在用Python构建一些XML。我的数据来源是一个字符串,我需要把字符串中的 \r
替换成换行符 <br />
。这个字符串可能会有多个换行。
我想要得到以下结果:
<foo><bar>Hello<br />world<br />I love you</bar></foo>
从这个字符串开始:
'Hello\rworld\rI love you.'
我查看了 SubElement(<node>, 'br')
这个方法,也考虑过使用CDATA。
举个例子:
from xml.etree.cElementTree import Element, SubElement, tostring
def add_xml_data(value):
data = Element('foo')
val_node = SubElement(data, 'bar')
val_node.text = value
val = value.strip('\r')
parts = val.split('\r')
for part in parts:
br = SubElement(val_node, 'br')
return data
value = 'Hello\rworld\rI love you.'
print tostring(add_xml_data(value))
1 个回答
0
我猜你是在使用 xml.etree.ElementTree
这个库。下面是大致的思路:
- 用字符串的
replace()
方法把\r
替换成<br/>
- 把替换后的内容放到
<bar></bar>
标签里面,使用字符串格式化 - 用
fromstring()
方法加载这个字符串 - 创建一个
foo
元素,然后用append()
方法把加载的树添加到里面
代码如下:
import xml.etree.ElementTree as etree
data = """
Hello\rworld\rI love you.
"""
data = '<bar>%s</bar>' % data.replace('\r', '<br/>')
bar = etree.fromstring(data)
foo = etree.Element('foo')
foo.append(bar)
print etree.tostring(foo)
输出结果是:
<foo><bar>
Hello<br />world<br />I love you.
</bar></foo>