如何使用 python 中的 ElementTree 获取元素的 xml:id
How do I get the xml:id of an element using ElementTree in python
很抱歉,如果这是一个非常基本的问题,但我已经在这个问题面前坐了几个小时了,就是无法解决它。
我正在处理英国国家语料库(文件格式为 XML),我想从这些文件中提取不同人物的属性。
我正在使用的部分的结构如下:
<bncDoc>
<teiHeader>
<profileDesc>
<particDesc n="C196">
<person ageGroup="X" xml:id="PS21Y" role="unspecified" sex="f" soc="UU" dialect="NONE" firstLang="EN-GBR" educ="X">
<persName>j. hammond</persName>
<occupation>interviewer</occupation>
</person>
<person ageGroup="X" xml:id="PS220" role="unspecified" sex="m" soc="UU" dialect="XIS" firstLang="EN-GBR" educ="X">
<persName>Bhagan</persName>
</person>
</particDesc>
</profileDesc>
</teiHeader>
</bncDoc>
我正在尝试提取“person”元素的“id”、“sex”、“soc”和“ageGroup”。但我只是不知道它如何与那些“xml:id”一起工作。我尝试这样做的方式(如下所示)不起作用。它适用于“sex”、“soc”和“ageGroup”,但不适用于“xml:id”。
有谁知道,如何让它发挥作用?那会对我有很大帮助! :)
for i in root.findall('teiHeader/profileDesc/particDesc/person'):
tmp = []
tmp.append(i.get('id'))
tmp.append(i.get('sex'))
tmp.append(i.get('soc'))
tmp.append(i.get('ageGroup'))
如果你使用
它会起作用
i.get('{http://www.w3.org/XML/1998/namespace}id')
这看起来有点难看,但这与 xml:
是绑定到 http://www.w3.org/XML/1998/namespace
URI 的特殊名称空间前缀有关。参见 https://www.w3.org/XML/1998/namespace。
很抱歉,如果这是一个非常基本的问题,但我已经在这个问题面前坐了几个小时了,就是无法解决它。
我正在处理英国国家语料库(文件格式为 XML),我想从这些文件中提取不同人物的属性。 我正在使用的部分的结构如下:
<bncDoc>
<teiHeader>
<profileDesc>
<particDesc n="C196">
<person ageGroup="X" xml:id="PS21Y" role="unspecified" sex="f" soc="UU" dialect="NONE" firstLang="EN-GBR" educ="X">
<persName>j. hammond</persName>
<occupation>interviewer</occupation>
</person>
<person ageGroup="X" xml:id="PS220" role="unspecified" sex="m" soc="UU" dialect="XIS" firstLang="EN-GBR" educ="X">
<persName>Bhagan</persName>
</person>
</particDesc>
</profileDesc>
</teiHeader>
</bncDoc>
我正在尝试提取“person”元素的“id”、“sex”、“soc”和“ageGroup”。但我只是不知道它如何与那些“xml:id”一起工作。我尝试这样做的方式(如下所示)不起作用。它适用于“sex”、“soc”和“ageGroup”,但不适用于“xml:id”。 有谁知道,如何让它发挥作用?那会对我有很大帮助! :)
for i in root.findall('teiHeader/profileDesc/particDesc/person'):
tmp = []
tmp.append(i.get('id'))
tmp.append(i.get('sex'))
tmp.append(i.get('soc'))
tmp.append(i.get('ageGroup'))
如果你使用
它会起作用i.get('{http://www.w3.org/XML/1998/namespace}id')
这看起来有点难看,但这与 xml:
是绑定到 http://www.w3.org/XML/1998/namespace
URI 的特殊名称空间前缀有关。参见 https://www.w3.org/XML/1998/namespace。