You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出para元素中呈现的数据?附XML示例

提取XML中<para>元素及嵌套列表数据的方法

嘿,我来帮你搞定这个问题!要提取<para>标签里的内容,包括它嵌套的<list>列表项,用Python的原生库或者XPath都能轻松实现,下面给你具体的操作方案:

先整理你的原始XML结构

首先把你提供的XML转成可解析的格式(去掉转义符):

<para>In this appeal against the judgment of Tribunal: 
  <list> 
    <listitem> 
      <listnum>(a)</listnum> 
      <listbody>Ajeet</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(b)</listnum> 
      <listbody>Kumar</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(c)</listnum> 
      <listbody>Singh</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(d)</listnum> 
    </listitem>
  </list>
</para>

方法一:用Python原生的xml.etree.ElementTree库

这是Python自带的XML解析工具,不用额外安装,步骤如下:

  1. 导入库并解析XML
  2. 定位到<para>元素,提取开头的文本内容
  3. 遍历<list>下的所有<listitem>,提取序号和对应的内容(注意处理空的listitem)

代码示例:

import xml.etree.ElementTree as ET

# 你的XML字符串(如果是文件可以用ET.parse())
xml_str = '''
<para>In this appeal against the judgment of Tribunal: 
  <list> 
    <listitem> 
      <listnum>(a)</listnum> 
      <listbody>Ajeet</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(b)</listnum> 
      <listbody>Kumar</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(c)</listnum> 
      <listbody>Singh</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(d)</listnum> 
    </listitem>
  </list>
</para>
'''

# 解析XML
root = ET.fromstring(xml_str)

# 提取<para>开头的文本内容
para_text = root.text.strip()
print(f"Para内容:{para_text}")

# 提取嵌套的列表项
print("\n列表数据:")
for listitem in root.findall('.//listitem'):
    listnum = listitem.find('listnum').text.strip()
    # 处理没有listbody的情况
    listbody = listitem.find('listbody').text.strip() if listitem.find('listbody') is not None else "无内容"
    print(f"{listnum} {listbody}")

运行这段代码后,你会得到这样的输出:

Para内容:In this appeal against the judgment of Tribunal:

列表数据:
(a) Ajeet
(b) Kumar
(c) Singh
(d) 无内容

方法二:用lxml库结合XPath查询(更灵活)

如果你需要更复杂的XML查询,lxml库的XPath支持更强大,需要先安装:pip install lxml

代码示例:

from lxml import etree

xml_str = '''
<para>In this appeal against the judgment of Tribunal: 
  <list> 
    <listitem> 
      <listnum>(a)</listnum> 
      <listbody>Ajeet</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(b)</listnum> 
      <listbody>Kumar</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(c)</listnum> 
      <listbody>Singh</listbody> 
    </listitem> 
    <listitem> 
      <listnum>(d)</listnum> 
    </listitem>
  </list>
</para>
'''

# 解析XML
tree = etree.fromstring(xml_str)

# 用XPath提取para文本
para_text = tree.xpath('string(./text())').strip()
print(f"Para内容:{para_text}")

# 用XPath提取所有列表项的序号和内容
print("\n列表数据:")
list_items = tree.xpath('.//listitem')
for item in list_items:
    num = item.xpath('./listnum/text()')[0].strip()
    body = item.xpath('./listbody/text()')[0].strip() if item.xpath('./listbody/text()') else "无内容"
    print(f"{num} {body}")

这个方法输出和上面一致,但XPath语法能让你更灵活地定位XML节点,适合复杂结构的XML。

内容的提问来源于stack exchange,提问作者Ajeet Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:00:32