【发布时间】:2015-08-31 02:26:08
【问题描述】:
我有一个如下所示的 xml 文件:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://data.treasury.gov:8001/Feed.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title type="text">DailyTreasuryYieldCurveRateData</title>
<id>http://data.treasury.gov:8001/feed.svc/DailyTreasuryYieldCurveRateData</id>
<updated>2015-08-30T15:17:09Z</updated>
<link rel="self" title="DailyTreasuryYieldCurveRateData" href="DailyTreasuryYieldCurveRateData" />
<entry>
<id>http://data.treasury.gov:8001/Feed.svc/DailyTreasuryYieldCurveRateData(6404)</id>
<title type="text"></title>
<updated>2015-08-30T15:17:09Z</updated>
<author>
<name />
</author>
<link rel="edit" title="DailyTreasuryYieldCurveRateDatum" href="DailyTreasuryYieldCurveRateData(6404)" />
<category term="TreasuryDataWarehouseModel.DailyTreasuryYieldCurveRateDatum" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:Id m:type="Edm.Int32">6404</d:Id>
<d:NEW_DATE m:type="Edm.DateTime">2015-08-03T00:00:00</d:NEW_DATE>
<d:BC_1MONTH m:type="Edm.Double">0.03</d:BC_1MONTH>
<d:BC_3MONTH m:type="Edm.Double">0.08</d:BC_3MONTH>
<d:BC_6MONTH m:type="Edm.Double">0.17</d:BC_6MONTH>
<d:BC_1YEAR m:type="Edm.Double">0.33</d:BC_1YEAR>
<d:BC_2YEAR m:type="Edm.Double">0.68</d:BC_2YEAR>
<d:BC_3YEAR m:type="Edm.Double">0.99</d:BC_3YEAR>
<d:BC_5YEAR m:type="Edm.Double">1.52</d:BC_5YEAR>
<d:BC_7YEAR m:type="Edm.Double">1.89</d:BC_7YEAR>
<d:BC_10YEAR m:type="Edm.Double">2.16</d:BC_10YEAR>
<d:BC_20YEAR m:type="Edm.Double">2.55</d:BC_20YEAR>
<d:BC_30YEAR m:type="Edm.Double">2.86</d:BC_30YEAR>
<d:BC_30YEARDISPLAY m:type="Edm.Double">2.86</d:BC_30YEARDISPLAY>
</m:properties>
</content>
</entry>
<entry>
<id>http://data.treasury.gov:8001/Feed.svc/DailyTreasuryYieldCurveRateData(6405)</id>
<title type="text"></title>
<updated>2015-08-30T15:17:09Z</updated>
<author>
<name />
</author>
<link rel="edit" title="DailyTreasuryYieldCurveRateDatum" href="DailyTreasuryYieldCurveRateData(6405)" />
<category term="TreasuryDataWarehouseModel.DailyTreasuryYieldCurveRateDatum" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:Id m:type="Edm.Int32">6405</d:Id>
<d:NEW_DATE m:type="Edm.DateTime">2015-08-04T00:00:00</d:NEW_DATE>
<d:BC_1MONTH m:type="Edm.Double">0.05</d:BC_1MONTH>
<d:BC_3MONTH m:type="Edm.Double">0.08</d:BC_3MONTH>
<d:BC_6MONTH m:type="Edm.Double">0.18</d:BC_6MONTH>
<d:BC_1YEAR m:type="Edm.Double">0.37</d:BC_1YEAR>
<d:BC_2YEAR m:type="Edm.Double">0.74</d:BC_2YEAR>
<d:BC_3YEAR m:type="Edm.Double">1.08</d:BC_3YEAR>
<d:BC_5YEAR m:type="Edm.Double">1.6</d:BC_5YEAR>
<d:BC_7YEAR m:type="Edm.Double">1.97</d:BC_7YEAR>
<d:BC_10YEAR m:type="Edm.Double">2.23</d:BC_10YEAR>
<d:BC_20YEAR m:type="Edm.Double">2.59</d:BC_20YEAR>
<d:BC_30YEAR m:type="Edm.Double">2.9</d:BC_30YEAR>
<d:BC_30YEARDISPLAY m:type="Edm.Double">2.9</d:BC_30YEARDISPLAY>
</m:properties>
</content>
</entry>
</feed>
如何解析“BC_10YEAR”的“2.16”?我一直在查看 ElementTree 和 lxml 的其他示例,但我似乎无法将这些示例中的 xml 格式与我的文件匹配。
我尝试的最后一件事是:
from lxml import etree
doc = etree.parse(yield_xml)
memoryElem = doc.find('content')
print memoryElem.text # element text
print memoryElem.get('type') # attribute
我收到一个错误:AttributeError: 'NoneType' object has no attribute 'text'
有没有简单的方法来做到这一点?
【问题讨论】: