1

子のコンテンツに基づいて特定のタグを見つけ、親タグとコンテンツを削除しようとしていますが、答えが見つかりません。ここに私のxmlがあります:

<video>
    <crew>
      <member billing="top">
        <name>Some Guy</name>
        <roles>
          <role>Painter</role>
          <role>Decorator</role>
        </roles>
      </crew>
      <crew billing="top">
        <name>Another Guy</name>
        <roles>
          <role>Primary</role>
        </roles>
      </crew>
    </crew>
</video>

私がやりたいのは、がブロックに存在するかどうかを検索することです。存在する場合は、<role>Primary</role>が存在するブロック<crew>全体を削除したいのですが、それは親です。したがって、結果は次のようになります。<crew><role>Primary</role>

<video>
    <crew>
      <member billing="top">
        <name>Some Guy</name>
        <roles>
          <role>Painter</role>
          <role>Decorator</role>
        </roles>
      </crew>
</video>

<crew>最後にない場合があり、他の多くのタグに埋もれている可能性があるため、そのブロックに含まれている場合、それが存在するブロック<role>Primary</role>全体を削除したいことがわかって<crew>います。私は試しました:

for find1 in root.iter(tag='role'):
    find1 = find1.text
    if find1 == "Primary":
        path = tree.xpath('//video/crew')
        etree.strip_elements(path, 'member')

<crew>ただし、これによりすべてのタグとその内容が削除されます。敬具。

4

1 に答える 1