如何解析具有子内容但没有子标签的完整 xml div
Posted
技术标签:
【中文标题】如何解析具有子内容但没有子标签的完整 xml div【英文标题】:How to parse full xml divs with child content but without child tags 【发布时间】:2022-01-13 11:42:04 【问题描述】:我有包含标记文本的大段的 xml 文件。 我需要解析去除子标签或替换的内容以创建 html 链接。
这是sample.xml的内容:
<BODY><ENTRY id="AB">Blabla</ENTRY>
<ENTRY id="XY"> This is the city of <LOC ref="at0001">Vienna</LOC>, which until <YEAR>1918</YEAR> blablabla</ENTRY></BODY>
这是我的代码:
import xml.etree.ElementTree as ET
parsedxml=ET.parse('sample.xml')
xmlroot = parsedxml.getroot()
section=xmlroot.find(".//*[@id='XY']").text
返回:“这就是城市”
我需要的是要么
“这是维也纳市,直到 1918 年 blablabla,很多类似的标签。”。
或者,理想情况下:
“这是维也纳的城市,直到1918年blablabla,很多类似的标签。”
【问题讨论】:
你能提供一个最小的、可重现的例子吗?见:***.com/help/minimal-reproducible-exampleET
和 filename
是什么?
相应地编辑了代码。也会做最小的可重复示例
如果你可以使用lxml而不是elementtree的话应该很容易做到。
【参考方案1】:
在上面的示例中,获取文本“这是维也纳市,直到 1918 年 blablabla”的一种方法是使用 xmltodict
和 json
。见下文:
import xmltodict
import json
xml = """
<BODY><ENTRY id="AB">Blabla</ENTRY>
<ENTRY id="XY"> This is the city of <LOC ref="at0001">Vienna</LOC>, which until <YEAR>1918</YEAR> blablabla</ENTRY></BODY>
"""
data_dict = xmltodict.parse(xml)
json_string = json.dumps(data_dict)
xml_json = json.loads(json_string)
text_i_want = xml_json['BODY']['ENTRY'][1]['#text']
print("text_i_want:", text_i_want)
【讨论】:
以上是关于如何解析具有子内容但没有子标签的完整 xml div的主要内容,如果未能解决你的问题,请参考以下文章