首页 > 解决方案 > 如何使用 Python 从 API 响应中提取特定的 XML 行

问题描述

我有一个项目,我连接到一个以 XML 格式输出数据的 API。我可以获取标签的值并将其打印出来,但想要获取 XML 中特定行的整行并将其写入 XML 文件。在 Python 中执行此操作的最佳方法是什么?我真的没有任何代码可以分享,因为我不确定如何写这个。

以下是 api 给出的 XML 文件或输出的示例:

<?xml version="1.0" ?>
<Product ParentID="XXX" ID="XXX" title="XXX">   
    <Values>
        <Value AttributeID="ABC" title="ABC1">ABC</Value>
        <Value AttributeID="DEF" title="DEF1">DEF</Value>
        <Value AttributeID="GHI" title="GHI1">GHI</Value>
    </Values>
</Product>

我想将 xml 文件写成这样:

<?xml version="1.0" ?>
<Product ParentID="XXX" ID="XXX" title="XXX">   
    <Values>
        <Value AttributeID="ABC" title="ABC1">ABC</Value>
        <Value AttributeID="GHI" title="GHI1">GHI</Value>
    </Values>
</Product>

标签: python-3.xxmlxml-parsing

解决方案


您可以使用带有 xpath 的 lxml 到达那里:

from lxml import etree
products = """[your xml above]"""

doc = etree.XML(products)
values = doc.xpath('//Value')
for value in values:
    if value.text!="ABC" and value.text!="GHI":
    #alternatively:
    if value.text=="DEF":
        value.getparent().remove(value)
print(etree.tostring(doc).decode())

输出:

<Product ParentID="XXX" ID="XXX" title="XXX">   
    <Values>
        <Value AttributeID="ABC" title="ABC1">ABC</Value>
        <Value AttributeID="GHI" title="GHI1">GHI</Value>
    </Values>
</Product>

推荐阅读