【发布时间】:2018-11-27 11:46:30
【问题描述】:
我有一个 TEI 文档,其中包含编码为 &stern_1; 的字符,这些字符映射到单独的 Zeichen.dtd(文档类型定义)文件中。文件Zeichen.dtd 包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY stern_1 "✳" >
我使用BeautifulSoup4 和lxml-xml 作为解析器。
例子:
dtd_str = '<!DOCTYPE Zeichen SYSTEM "Zeichen.dtd">'
xml_str = "<p>Hello, &stern_1;!</p>"
from bs4 import BeautifulSoup
soup = BeautifulSoup(dtd_str+xml_str, 'lxml-xml')
print(soup.find('p').get_text())
上面的代码打印了这个:
Hello, !
而不是这个:
Hello, ✳!
我也尝试了内联 DTD,结果相同:
dtd_str = """
<!DOCTYPE html [
<!ENTITY stern_1 "✳">
]>
"""
xml_str = "<p>Hello, &stern_1;!</p>"
from bs4 import BeautifulSoup
soup = BeautifulSoup(xml_str, 'lxml-xml')
print(soup.find('p').get_text())
输出:
Hello, !
有什么想法吗?
【问题讨论】:
-
您似乎从未将 doctype 和 p-tag 字符串放在一起。你总是只查找 xml 字符串,所以我想自定义字符永远不会加载。
-
是的,它应该是
BeautifulSoup(dtd_str+xml_str, 'lxml-xml'),但这并没有改变任何东西——问题仍然存在 -
谢谢,我更正了。
标签: python-3.x beautifulsoup lxml dtd tei