这个python lxml库有什么问题
我正在使用xpath读取一个xml文件,该文件返回null main.py这个python lxml库有什么问题,python,lxml,Python,Lxml,我正在使用xpath读取一个xml文件,该文件返回null main.py #!/usr/bin/python import sys from util import xml_util def main(): try: xml = XMLReader('test.xml') x = xml.getitem('numbers/x') print x return 0 except: return -1
#!/usr/bin/python
import sys
from util import xml_util
def main():
try:
xml = XMLReader('test.xml')
x = xml.getitem('numbers/x')
print x
return 0
except:
return -1
if __name__ == '__main__':
sys.exit(main())
xml_util.py
from lxml import etree
class XMLReader:
"Parse file and read data using find(path)"
def __init__(self,fname):
self.tree = etree.parse(fname)
self.root = self.tree.getroot()
def getitem(self,path,converter=str):
return converter(self.root.find(path).text)
def getlist(self,path,converter=str):
return [converter(item.text) for item in self.root.find(path)]
test.xml
<mystuff>
<numbers>
<x>3.14</x>
<y>42</y>
<z>11</z>
</numbers>
</mystuff>
3.14
42
11
XMLReader类是从本文收到的
编辑
如果您仍然存在问题,并且您使用
\uuuu init\uuuuuuuuuuuuuuuuuuupy
设置了一个模块,并且正在尝试导入xml\u util,那么请引用您的读取器xml\u util.XMLReader
,或者将导入状态从util.xml\u util导入XMLReader更改为
编辑
如果您仍然存在问题,并且您使用\uu init\uuuuuuuuuuuuuuuuuupy
设置了一个模块,并且正在尝试导入xml\u util,那么请参考您的读取器xml\u util.XMLReader
,或者将您的导入状态从util.xml\u util导入XMLReader
更改为,您的代码适合我。我把它放在一个名为main.py
的文件中:
#!/usr/bin/python
import sys
from lxml import etree
def main():
try:
xml = XMLReader('test.xml')
x = xml.getitem('numbers/x')
print x
return 0
except:
return -1
class XMLReader:
"Parse file and read data using find(path)"
def __init__(self,fname):
self.tree = etree.parse(fname)
self.root = self.tree.getroot()
def getitem(self,path,converter=str):
return converter(self.root.find(path).text)
def getlist(self,path,converter=str):
return [converter(item.text) for item in self.root.find(path)]
在与main.py
相同的目录中,我使用您提供的xml添加了test.xml
外壳:
$ ipython
Python 2.6.6 (r266:84292, Aug 28 2012, 10:55:56)
In [1]: from main import main
In [2]: main()
3.14
Out[2]: 0
In [3]:
看起来您的脚本没有在test.xml
中查找它
正如其他人所指出的,您在问题中输入的代码中存在缩进问题。在粘贴代码后,我认为这是一个格式问题。我在中的print x
行上做了选项卡
另外,可能是您的import
语句需要导入XMLReader。请尝试将从util import xml_util
更改为从xml_util import XMLReader
您的代码适合我。我把它放在一个名为main.py
的文件中:
#!/usr/bin/python
import sys
from lxml import etree
def main():
try:
xml = XMLReader('test.xml')
x = xml.getitem('numbers/x')
print x
return 0
except:
return -1
class XMLReader:
"Parse file and read data using find(path)"
def __init__(self,fname):
self.tree = etree.parse(fname)
self.root = self.tree.getroot()
def getitem(self,path,converter=str):
return converter(self.root.find(path).text)
def getlist(self,path,converter=str):
return [converter(item.text) for item in self.root.find(path)]
在与main.py
相同的目录中,我使用您提供的xml添加了test.xml
外壳:
$ ipython
Python 2.6.6 (r266:84292, Aug 28 2012, 10:55:56)
In [1]: from main import main
In [2]: main()
3.14
Out[2]: 0
In [3]:
看起来您的脚本没有在test.xml
中查找它
正如其他人所指出的,您在问题中输入的代码中存在缩进问题。在粘贴代码后,我认为这是一个格式问题。我在中的print x
行上做了选项卡
另外,可能是您的import
语句需要导入XMLReader。尝试将从util import xml_util
更改为从xml_util import XMLReader
显示的代码存在缩进问题和不正确的导入。你能解决这个问题吗?我创建了一个名为util的模块,xml_util.py有一个类XMLReader,所以我使用了类似于from util import xml_util的导入,这是错误的吗?@Kathick如果XMLReader
在xml_util
中定义了,而你从util import xml_util
中定义了,您不能像在main
中那样直接调用XMLReader
。它将导致一个namererror
,并且将执行except
子句。from util.xml\u util import XMLReader?是。此外,如果您希望有人阅读您的评论,请使用@username提及他们,他们会得到通知。您显示的代码存在缩进问题和不正确的导入。你能解决这个问题吗?我创建了一个名为util的模块,xml_util.py有一个类XMLReader,所以我使用了类似于from util import xml_util的导入,这是错误的吗?@Kathick如果XMLReader
在xml_util
中定义了,而你从util import xml_util
中定义了,您不能像在main
中那样直接调用XMLReader
。它将导致一个namererror
,并且将执行except
子句。from util.xml\u util import XMLReader?是。另外,如果你想让别人阅读你的评论,请用@username提及他们,他们会得到通知。你应该删除这个,因为这只是问题中代码的复制/粘贴。@Gromer,真的。。。再看一次。啊,你改变了导入。继续,先生@Kathick,如果代码johnthexii不适合你,你应该确保你的脚本能够访问xml文件。你应该删除它,因为它只是问题中代码的复制/粘贴。@Gromer,真的。。。再看一次。啊,你改变了导入。继续,先生@Kathick,如果代码johnthexii不适用于您,您应该确保您的脚本能够访问xml文件。