【问题标题】:How to parse full xml divs with child content but without child tags如何解析具有子内容但没有子标签的完整 xml div
【发布时间】: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,很多类似的标签。”

【问题讨论】:

  • 你能提供一个最小的、可重现的例子吗?见:stackoverflow.com/help/minimal-reproducible-example
  • ETfilename 是什么?
  • 相应地编辑了代码。也会做最小的可重复示例
  • 如果你可以使用lxml而不是elementtree的话应该很容易做到。

标签: python xml-parsing elementtree


【解决方案1】:

在上面的示例中,获取文本“这是维也纳市,直到 1918 年 blablabla”的一种方法是使用 xmltodictjson。见下文:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2011-09-08
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多