我正在用这个形状解析一个XML文件:
from lxml import etree
mystring='''<div n="0001" type="doc" xml:id="_3168060002">
<p xml:id="_3168060003">[car 1] Séquence préparatoire pour <p xml:id="_3168060005">a) la définition </p></p></p></div>
<div n="0002" type="doc" xml:id="_3168060012"><p xml:id="_3168060003">[blue] la voiture pour <p xml:id="_3168060005">a) la définition </p></p></p></div>我想捕捉div中的任何内容,后面跟着p标记,也包括div的n属性。我的解析策略如下:
parser = etree.XMLParser(resolve_entities=False, strip_cdata=False, recover=True, ns_clean=True)
XML_tree = etree.fromstring(claims_PDM.encode() , parser=parser)
paragraphs = './/div[@n]/p[@xml:id]'
xml_query = paragraphs
all_paras = XML_tree.xpath(xml_query)
for para in all_paras:
print(para.tag)它可以工作,但我不知道如何同时提取p标记中的所有内容,以及div的n属性,因为元素的标记和属性是p的,而不是div的。
是否知道如何访问元素的父元素的属性?
谢谢。
发布于 2022-02-25 12:47:50
一个简单的备选方案:
for car in XML_tree.xpath('//div[@n]'):
print(car.xpath('@n')[0],car.xpath('normalize-space(.//p[@*[local-name()="xml:id"]]/text())'))输出:
0001 [car 1] Séquence préparatoire pour
0002 [blue] la voiture pourhttps://stackoverflow.com/questions/71259765
复制相似问题