我有一个 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, !
有任何想法吗?