使用ElementT从混合元素xml标记中获取文本

2024-06-18 20:08:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用ElementTree来解析我拥有的一个XML文档。我正在从u标记中获取文本。其中有些混合内容,我需要过滤掉或保留为文本。我有两个例子:

<u>
   <vocal type="filler">
     <desc>eh</desc>
   </vocal>¿Sí? 
</u>

<u>Pues... 
   <vocal type="non-ling">
     <desc>laugh</desc>
   </vocal>A mí no me suena. 
</u>

如果voice标签的类型是filler,我想得到它里面的文本,但是如果它的类型是non-ling,就不需要了。在

如果我迭代u的子元素,那么最后一个文本位总是丢失。我能到达它的唯一方法是使用itertext()。但这样就失去了检查声带类型的机会。在

如何解析它以得到如下结果:

^{pr2}$

Tags: 文档标记文本类型内容typexmldesc
1条回答
网友
1楼 · 发布于 2024-06-18 20:08:58

丢失的文本是“Sí?”和“A míno me suena.”可作为每个<vocal>元素(元素结束标记后面的文本)的^{}属性。在

下面是一种获得所需输出的方法(用python2.7测试)。在

假设声乐.xml看起来像这样:

<root>
  <u>
    <vocal type="filler">
      <desc>eh</desc>
    </vocal>¿Sí? 
  </u>

  <u>Pues... 
     <vocal type="non-ling">
       <desc>laugh</desc>
     </vocal>A mí no me suena. 
  </u>
</root>

代码:

^{pr2}$

输出:

eh ¿Sí?
Pues... A mí no me suena.

相关问题 更多 >