2014-10-01 37 views
0

儘管存在類似的問題,但我無法完成跳躍。幫助將受到重視!使用Python解析目錄中所有文件的XML標記值

  • 我試圖遞歸解析在目錄/子目錄所有XML文件
  • 我找一個出現在該標籤「操作員ID」

示例源XML值:

<Operators> 
    <Operator id="OId_LD"> 
    <OperatorCode>LD</OperatorCode> 
    <OperatorShortName>ARRIVA THE SHIRES LIMIT</OperatorShortName> 

這是代碼我迄今:

from xml.dom.minidom import parse 
import os 
def jarv(target_folder): 
    for root,dirs,files in os.walk(target_folder): 
     for targetfile in files: 
      if targetfile.endswith(".xml"): 
       print targetfile 
       dom=parse(targetfile) 
       name = dom.getElementsByTagName('Operator_id') 
       print name[0].firstChild.nodeValue 

這是我運行的終端命令:

python -c "execfile('xml_tag.py'); jarv('/Users/admin/Projects/AtoB_GTFS')" 

這是錯誤我收到:

tfl_64-31_-37434-y05.xml

encodings.xml 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "xml_tag.py", line 8, in jarv 
    dom=parse(targetfile) 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/minidom.py", line 1918, in parse 
    return expatbuilder.parse(file) 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/dom/expatbuilder.py", line 922, in parse 
    fp = open(file, 'rb') 
IOError: [Errno 2] No such file or directory: 'encodings.xml' 
(frigo)andytmac:AtoB_GTFS admin$ python -c "execfile('xml_tag.py'); jarv('/Users/admin/Projects/AtoB_GTFS')" 
tfl_64-31_-37434-y05.xml 

如果我評論在「打印目標文件」行後面的代碼列出了所有我擁有的xml文件。

感謝您的幫助,

安迪

回答

0

你不看在正確的地方(相對路徑):當您使用for root, dirs, files in os.walk(target_folder):files是在目錄root的文件名列表,而不是他們的絕對路徑。

嘗試換裝dom=parse(targetfile) by dom = parse(os.sep.join(root, targetfile))

相關問題