我是Python新手,正在研究將XML文件更改爲HTML的實用程序。 XML來自request = urllib2.Request(url)
的調用,其中我在代碼的早期生成自定義url,然後設置response = urllib2.urlopen(request)
,最後設置爲xml_response = response.read()
。據我所知,這工作正常。Python:爲什麼這個字符串會打印但不寫入文件?
我的問題是解析響應。對於初學者來說,這裏是XML結構我回來的部分示例:
我試圖適應在minidom命名教程幻燈片這裏舉例解析我的XML(這是eBay的搜索結果,順便說一句):http://docs.python.org/2/library/xml.dom.minidom.html
到目前爲止我的代碼看起來是這樣的,用try塊是試圖診斷問題:
doc = minidom.parseString(xml_response)
#Extract relevant information and prepare it for HTML formatting.
try:
handleDocument(doc)
except:
print "Failed to handle document!"
def getText(nodelist): #taken straight from slideshow example
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
print "A TEXT NODE!"
rc.append(node.data)
return ''.join(rc) #this is a string, right?
def handleDocument(doc):
outputFile = open("EbaySearchResults.html", "w")
outputFile.write("<html>\n")
outputFile.write("<body>\n")
try:
items = doc.getElementsByTagName("item")
except:
"Failed to get elements by tag name."
handleItems(items)
outputFile.write("</html>\n")
outputFile.write("</body>\n")
def handleItems(items):
for item in items:
title = item.getElementsByTagName("title")[0] #there should be only one title
print "<h2>%s</h2>" % getText(title.childNodes) #this works fine!
try: #none of these things work!
outputFile.write("<h2>%s</h2>" % getText(title.childNodes))
#outputFile.write("<h2>" + getText(title.childNodes) + "</h2>")
#str = getText(title.childNodes)
#outputFIle.write(string(str))
#outputFile.write(getText(title.childNodes))
except:
print "FAIL"
我不明白爲什麼正確的標題文本並打印到CONSO但是會引發異常並且不適用於輸出文件。像這樣寫簡單的字符串可以正常工作:outputFile.write("<html>\n")
我的字符串構造正在發生什麼?據我所知,我從minidom示例中使用的getText
方法返回一個字符串 - 這只是你可以寫入文件的東西。
*什麼*異常?請發佈完整的錯誤消息,包括堆棧跟蹤。 – kindall 2013-04-22 23:06:03
爲什麼這裏有太多的問題只是說'異常',或者給出了沒有堆棧跟蹤的消息 - 這是非常有用的調試信息,爲什麼有人不包含它?它令我難以置信。 – 2013-04-22 23:14:28
我想我們只是認爲我們的錯誤對於專家程序員來說顯而易見。但是你是對的 - 在學習如何打印堆棧跟蹤並發現它只是說'NameError:全局名'outputFile'沒有被定義'時,我立即就能看到問題了。學過的知識。 :-) – nicole 2013-04-23 00:20:37