python - 使用 Python ElementTree 在 XML 中查找兄弟元素文本值
问题描述
我正在将 Python 3.7 与 Anaconda 一起使用,并且我试图从带有 text = CX.PAIR1.BORROWER.FICO 的元素之后的 XML 元素中获取文本值。所以在这种情况下,我想返回“779”。
从下面的 XML 片段可以看出,这些标签不是唯一的,也没有名称或属性,因此只能使用包含的文本来定位数据。
<CustomField>
<id>CustomField/63</id>
<fieldName>CX.WLS.RATETYPE</fieldName>
<stringValue>FIX30</stringValue>
</CustomField>
<CustomField>
<id>CustomField/64</id>
<fieldName>CX.PAIR1.BORROWER.FICO</fieldName>
<stringValue>779</stringValue>
<numericValue>779.0</numericValue>
</CustomField>
<CustomField>
<id>CustomField/65</id>
<fieldName>CX.PAIRS16</fieldName>
<stringValue>779</stringValue>
<numericValue>779.0</numericValue>
</CustomField>
我尝试过各种形式:
Borrower_FICO = root.find('.//*[fieldName = "CX.PAIR1.BORROWER.FICO"]/following-sibling::node()')
和..
Borrower_FICO = root.find('.//*[text() = "CX.PAIR1.BORROWER.FICO"]/following-sibling::node()')
但看不到将数据拉入我的变量Borrower_FICO
我在这里做错了什么?
解决方案
下面:(不需要lxml)
import xml.etree.ElementTree as ET
xml = '''<r><CustomField>
<id>CustomField/63</id>
<fieldName>CX.WLS.RATETYPE</fieldName>
<stringValue>FIX30</stringValue>
</CustomField>
<CustomField>
<id>CustomField/64</id>
<fieldName>CX.PAIR1.BORROWER.FICO</fieldName>
<stringValue>779</stringValue>
<numericValue>779.0</numericValue>
</CustomField>
<CustomField>
<id>CustomField/65</id>
<fieldName>CX.PAIRS16</fieldName>
<stringValue>779</stringValue>
<numericValue>779.0</numericValue>
</CustomField></r>'''
root = ET.fromstring(xml)
entry = root.find(".//CustomField/[fieldName='CX.PAIR1.BORROWER.FICO']")
print(entry.find('stringValue').text)
输出:
779
推荐阅读
- lua - 尝试在 Lua 中重置游戏
- javascript - 仅使用 Javascript 或 Jquery 从图像中提取多个图像,而不使用 CSS
- python - DeepSpeech 安装错误:“ImportError:DLL 加载失败:找不到指定的模块。”
- kubernetes - 如何在 AWS EC2 中设置的 kubernetes 仪表板中将 keycloak 部署为 pod?
- java - 如何在 IntelliJ IDEA 中启用 Java 14 记录?
- excel - 在多行数据的列中查找最后一个活动单元格
- c# - C# Google API - 收到无效的 JSON 有效负载
- angular - 以角度获取 GET http://localhost:4200/null 404(未找到)
- amazon-web-services - 无法将 docker 容器绑定到辅助接口
- javascript - 如何只运行一次javascript脚本而不让我的表单ajax调用运行