分析内部元素为空的元素的文本

2024-09-30 14:18:32 发布

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

我试图用Python语言将使用大量表的XHTML文档转换为语义XML文档xml.etree. 但是,我在转换这个XHTML时遇到了一些问题

<TD>
  Textline1<BR/>
  Textline2<BR/>
  Textline3
</TD>

变成这样

^{pr2}$

问题是我不知道如何获取BR元素后面的文本。在


Tags: 文档br语言元素语义xmltdetree
2条回答

我不认为标签是空的是你的问题。xml.etree可能不希望您将子元素和纯文本节点混合在一起。在

BeautifulSoup非常适合解析格式不好的XML或HTML:

import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(open('in.html').read())
print "\n".join(["<line>%s</line>" % node.strip() for node in soup.find('td').contents if isinstance(node, BeautifulSoup.NavigableString)])

您需要使用<;br>;元素的.tail属性。在

import xml.etree.ElementTree as et

doc = """<TD>
  Textline1<BR/>
  Textline2<BR/>
  Textline3
</TD>
"""

e = et.fromstring(doc)

items = []
for x in e.getiterator():
    if x.text is not None:
        items.append(x.text.strip())
    if x.tail is not None:
        items.append(x.tail.strip())

doc2 = et.Element("lines")
for i in items:
    l=et.SubElement(doc2, "line")
    l.text = i

print(et.tostring(doc2))

相关问题 更多 >