无论是否xml
,都无法确定如何在etree
中解析xpath
。
我试图将元素的所有实例作为记录,并将每个实例的子字段放入字典中。最后,我希望将字段数据放入Pandas DataFrame
,并将val name属性作为列标题。
下面,每个"地图"是一个记录。
示例xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<response xmlns="a url">
<fn>
<list>
<map>
<val name="COUNT">0</val>
<val name="CATEGORY">AA</val>
<val name="AVERAGE">48.064133</val>
<val name="RANKING">4</val>
<val name="NAME">PORTER</val>
<val name="INDUSTRY_TAG">DESIGN</val>
</map>
<map>
<val name="COUNT">3</val>
<val name="CATEGORY">BA</val>
<val name="AVERAGE">77.33</val>
<val name="RANKING">27</val>
<val name="NAME">DANIELS</val>
<val name="INDUSTRY_TAG">INTERACTIVE</val>
</map>
<map>
<val name="COUNT">8</val>
<val name="CATEGORY">BB</val>
<val name="AVERAGE">102.85</val>
<val name="RANKING">15</val>
<val name="NAME">SWEETWATER</val>
<val name="INDUSTRY_TAG">GRAPHIC</val>
</map>
</list>
</fn>
</response>
xml
来自api。 &#34;响应&#34;是api调用已分配给的变量。下面的代码生成一个连续的&#34; val&#34;变量。
root = etree.fromstring(response.content)
for node in root.findall('.//*/*[@name]')
print(node.text)
我尝试过使用xpath
来尝试获取&#34;地图&#34;等级,但那不起作用。
我使用基于these examples和{{3}}的xpath
语句,但只有以下内容似乎找不到任何内容,但它与上面的列表相同:< / p>
for node in root.xpath('//*[@name]'):
print(node.text)
我尝试过绝对路径 - root.xpath('response/fn/list/map')
,但这似乎无法奏效。我试过root.xpath('//val')
,因为我认为这会让我得到所有的&#34; val&#34;变量,但这还没有奏效。如果我输入root.xpath('//*')
,我会得到&#34; val&#34;值。
显然,我并不喜欢一些基本的东西,并希望能够走上智慧的道路。
由于