如何使用 Python 从 API 响应中提取特定的 XML 行
How to Extract Specific XML lines from an API response using Python
我有一个连接到 API 的项目,它在 XML 中输出数据。我可以抓取标签的值并将它们打印出来,但我想抓取 XML 中的整行特定行并将其写到 XML 文件中。在 Python 中执行此操作的最佳方法是什么?我真的没有任何代码可以分享,因为我不确定如何编写它。
这是 XML 文件或 api 给出的输出的示例:
<?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>
根据我的经验,我总是使用某种解析器来解析文本并将其保存为一个对象,其属性可以像任何其他数组或列表一样访问。
这是一个 link 到 python 3 的 xml 元素树解析器,它将根据您的 xml 输入创建一个可以使用索引或字符串访问的对象键。
https://docs.python.org/3/library/xml.etree.elementtree.html
希望本文和示例对您有所帮助!
您可以使用带 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>
我有一个连接到 API 的项目,它在 XML 中输出数据。我可以抓取标签的值并将它们打印出来,但我想抓取 XML 中的整行特定行并将其写到 XML 文件中。在 Python 中执行此操作的最佳方法是什么?我真的没有任何代码可以分享,因为我不确定如何编写它。
这是 XML 文件或 api 给出的输出的示例:
<?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>
根据我的经验,我总是使用某种解析器来解析文本并将其保存为一个对象,其属性可以像任何其他数组或列表一样访问。
这是一个 link 到 python 3 的 xml 元素树解析器,它将根据您的 xml 输入创建一个可以使用索引或字符串访问的对象键。
https://docs.python.org/3/library/xml.etree.elementtree.html
希望本文和示例对您有所帮助!
您可以使用带 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>