从XML中提取特定的标签,并写入到一个新的XML在Python

问题描述:

我有一个这样的XML:从XML中提取特定的标签,并写入到一个新的XML在Python

<Manuscript> 
<model defaultValue="data.TotalResult"> 
    <object id="data" path="data"> 
     <condition> 
       <comparison compare="and"> 
       <operand idref="Context1" type="boolean" /> 
       <operand idref="Context2" type="boolean" /> 
       </comparison> 
     </condition> 

    </object> 
    <condition> 
       <comparison compare="and"> 
       <operand idref="Context5" type="boolean" /> 
       <operand idref="Context6" type="boolean" /> 
       </comparison> 
    </condition> 
</model> 
    <condition> 
       <comparison compare="and"> 
       <operand idref="Context9" type="boolean" /> 
       <operand idref="Context10" type="boolean" /> 
       </comparison> 
    </condition> 

</Manuscript> 

我想提取其名称为“条件”的所有标签,串联/追加在一起并创建另一个XML为:

<root> 
    <condition> 
      <comparison compare="and"> 
      <operand idref="Context1" type="boolean" /> 
      <operand idref="Context2" type="boolean" /> 
      </comparison> 
    </condition> 
    <condition> 
       <comparison compare="and"> 
       <operand idref="Context5" type="boolean" /> 
       <operand idref="Context6" type="boolean" /> 
       </comparison> 
    </condition> 
    <condition> 
       <comparison compare="and"> 
       <operand idref="Context9" type="boolean" /> 
       <operand idref="Context10" type="boolean" /> 
       </comparison> 
    </condition> 
</root> 

任何想法我怎么能做到这一点是Python?

在此先感谢。

可以使用BeautifulSoup两个解析和创建所需的新的XML。

看看下面的脚本,并改变它,你才能达到期望的结果希望。

from bs4 import BeautifulSoup as Soup 

xml_str = """ 
<Manuscript> 
<model defaultValue="data.TotalResult"> 
    <object id="data" path="data"> 
     <condition> 
       <comparison compare="and"> 
       <operand idref="Context1" type="boolean" /> 
       <operand idref="Context2" type="boolean" /> 
       </comparison> 
     </condition> 

    </object> 
    <condition> 
       <comparison compare="and"> 
       <operand idref="Context5" type="boolean" /> 
       <operand idref="Context6" type="boolean" /> 
       </comparison> 
    </condition> 
</model> 
    <condition> 
       <comparison compare="and"> 
       <operand idref="Context9" type="boolean" /> 
       <operand idref="Context10" type="boolean" /> 
       </comparison> 
    </condition> 
</Manuscript> 
""" 

xml_parsed = Soup(xml_str, 'lxml') 
output_xml = Soup("", 'lxml') 
output_xml.append(output_xml.new_tag('root')) 
for condition in xml_parsed.find_all('condition'): 
    output_xml.find('root').append(condition) 
print(output_xml.prettify()) 

这将打印以下内容:

<root> 
<condition> 
    <comparison compare="and"> 
    <operand idref="Context1" type="boolean"> 
    </operand> 
    <operand idref="Context2" type="boolean"> 
    </operand> 
    </comparison> 
</condition> 
<condition> 
    <comparison compare="and"> 
    <operand idref="Context5" type="boolean"> 
    </operand> 
    <operand idref="Context6" type="boolean"> 
    </operand> 
    </comparison> 
</condition> 
<condition> 
    <comparison compare="and"> 
    <operand idref="Context9" type="boolean"> 
    </operand> 
    <operand idref="Context10" type="boolean"> 
    </operand> 
    </comparison> 
</condition> 
</root> 
+0

非常感谢! – Bhaskar

使用Beautiful Soup is a Python library拉数据输出HTML和XML文件。它与您最喜爱的解析器一起工作,提供导航,搜索和修改解析树的惯用方式。它通常可以节省程序员数小时或数天的工作时间。