在 Python 中生成 HTML/XML?
Generate HTML/XML in Python?
我正在使用 Python 以编程方式生成 HTML。我要生成的 HTML 是这样的:
<p>Hello <b>world</b> how are you?</p>
但是,我不知道如何在<b>
标签前添加hello
和粗体标签后的字符串how are you?
。
我的代码如下所示:
from xml.etree import ElementTree
p = ElementTree.Element('p')
b = ElementTree.Element('b')
b.text = 'world'
p.append(b)
我应该在哪里添加 hello
和 how are you
?段落元素只有一个 p.text
字段,在构建文档时似乎没有办法穿插文本和其他 HTML 标签。
如何以编程方式生成标签和文本混合在一起的 HTML 文档?
您可以这样做,但您需要将文本片段放入 <span>
标签中。在我看来,这只是个坏主意。 HTML 不是 XML。有更好的工具。
import sys
from xml.etree import ElementTree as ET
html = ET.Element('html')
body = ET.Element('body')
html.append(body)
para = ET.Element('p')
b1 = ET.Element('span')
b1.text = "Hello"
b2 = ET.Element('b')
b2.text = "world,"
b3 = ET.Element('span')
b3.text = "how are you?"
para.append(b1)
para.append(b2)
para.append(b3)
html.append(para)
ET.ElementTree(html).write(sys.stdout, encoding='unicode', method='html')
无论lenient/permissive渲染引擎对HTML的解析如何,OP都在问如何负责任地构建结构化文本。
下面是如何使用 ElementTree 的 TreeBuilder class 构建结构,非常简单:
#!/usr/bin/env python3
#!/usr/bin/env python3
import xml.etree.ElementTree as ET
builder = ET.TreeBuilder()
builder.start('p', {})
builder.data('Hello ')
builder.start('b', {})
builder.data('world')
builder.end('b')
builder.data(' how are you?')
builder.end('p')
root = builder.close() # close to "finalize the tree" and return an Element
ET.dump(root) # print the Element
物有所值,我明白了
<p>Hello <b>world…
非常类似于
<para>Hello <emphasis>world…
在文档中 XML。
我正在使用 Python 以编程方式生成 HTML。我要生成的 HTML 是这样的:
<p>Hello <b>world</b> how are you?</p>
但是,我不知道如何在<b>
标签前添加hello
和粗体标签后的字符串how are you?
。
我的代码如下所示:
from xml.etree import ElementTree
p = ElementTree.Element('p')
b = ElementTree.Element('b')
b.text = 'world'
p.append(b)
我应该在哪里添加 hello
和 how are you
?段落元素只有一个 p.text
字段,在构建文档时似乎没有办法穿插文本和其他 HTML 标签。
如何以编程方式生成标签和文本混合在一起的 HTML 文档?
您可以这样做,但您需要将文本片段放入 <span>
标签中。在我看来,这只是个坏主意。 HTML 不是 XML。有更好的工具。
import sys
from xml.etree import ElementTree as ET
html = ET.Element('html')
body = ET.Element('body')
html.append(body)
para = ET.Element('p')
b1 = ET.Element('span')
b1.text = "Hello"
b2 = ET.Element('b')
b2.text = "world,"
b3 = ET.Element('span')
b3.text = "how are you?"
para.append(b1)
para.append(b2)
para.append(b3)
html.append(para)
ET.ElementTree(html).write(sys.stdout, encoding='unicode', method='html')
无论lenient/permissive渲染引擎对HTML的解析如何,OP都在问如何负责任地构建结构化文本。
下面是如何使用 ElementTree 的 TreeBuilder class 构建结构,非常简单:
#!/usr/bin/env python3
#!/usr/bin/env python3
import xml.etree.ElementTree as ET
builder = ET.TreeBuilder()
builder.start('p', {})
builder.data('Hello ')
builder.start('b', {})
builder.data('world')
builder.end('b')
builder.data(' how are you?')
builder.end('p')
root = builder.close() # close to "finalize the tree" and return an Element
ET.dump(root) # print the Element
物有所值,我明白了
<p>Hello <b>world…
非常类似于
<para>Hello <emphasis>world…
在文档中 XML。