很抱歉提出这个问题,尽管有很多关于此问题的主题。但似乎现在没有一个满足我的需求。
我有一个xml文件。
<RestaurantList>
<Restaurant id="100000">
<Url>http://www.example.com/</Url>
<Name>TestRestaurant</Name>
<Description>
<Text>This restaurant has a generous selection of fine wines</Text>
</Description>
</Restaurant>
<Restaurant id="100001">
<Url>http://www.example.com/</Url>
<Name>TestRestaurant1</Name>
<Description>
<Text>This restaurant1 has a generous selection of fine wines</Text>
</Description>
</Restaurant>
</RestaurantList>
我想遍历所有元素并将其中的一些元素保存到db中。我在python中看到了lxml
或xml
等库。我试过这个:
import xml.etree.ElementTree as ET
file = ET.parse(settings.MEDIA_ROOT+'\\table.xml')
rests = file.xpath('//Restaurant')
for each in rests:
self.stdout.write(each)
但我收到ElementTree has no object attribute xpath
错误,
这样做的最佳方式是什么?提前谢天谢地
答案 0 :(得分:1)
您的示例代码完全适用于Python 2.7.4和lxml 3.2.3,xpath()
方法返回包含两个Restaurant
元素的列表。如果您的XML解析器坚持XML文件格式正确,可能您提供的文件错误,或者文件以UTF-16等不可识别的编码保存。
要对此进行调试,请尝试打印open(settings.MEDIA_ROOT+'\\table.xml').read()
并查看输出是否与有效的XML类似。如果对XML的正确性存在疑问,最好使用xmllint
等独立工具对其进行验证。
答案 1 :(得分:0)
我这样做了:
datei = ET.parse(settings.MEDIA_ROOT+'\\table.xml')
rests = datei.getroot()
for each in rests:
#do something with tags
非常感谢您的回答和观点..