xml困境:努力用elementree,xpath获取数据

时间:2018-04-04 18:16:36

标签: python xml xpath elementtree

无论是否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;值。

显然,我并不喜欢一些基本的东西,并希望能够走上智慧的道路。

由于

0 个答案:

没有答案