1

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


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>

XMLReaderクラスはこの投稿から受信されますhttps://stackoverflow.com/questions/4357494/how-do-i-read-data-using-lxml-in-python

4

2 に答える 2

1
#!/usr/bin/python
import sys
from xml_util import XMLReader

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を使用してモジュールを設定し、__init__.pyインポートしようとしている場合は、リーダーを参照するxml_util.XMLReaderか、インポートステートメントを次のように変更してください。from util.xml_util import XMLReader

于 2012-10-19T18:00:28.000 に答える
0

あなたのコードは私のために働きます。私はこれをというファイルに入れました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)]

同じディレクトリに、提供したXMLmain.pyを追加しました。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をインポートする必要があるのはステートメントかもしれません。に変更from util import xml_utilしてみてくださいfrom xml_util import XMLReader

于 2012-10-19T18:05:03.737 に答える