变量问题

greex 2013-05-19 03:20:05
def __init__(self,parentNode,node):
self.__node=node
self.__allChildNodes=[]
tmpTextValue=''
print 000
for item in self.__node.childNodes:
if(item.nodeType==1):
tmpNodeInfo=nodeInfo(self.__node,item)
setattr(tmpNodeInfo,tmpNodeInfo.tagName(),tmpNodeInfo.allChildNodes())
for itemKey in item.attributes.keys():
setattr(tmpNodeInfo,itemKey,item.getAttribute(itemKey))
print 222,tmpTextValue
if(len(tmpTextValue) > 0):
setattr(tmpNodeInfo,'textValue',tmpTextValue)
self.__allChildNodes.append(tmpNodeInfo)
elif item.nodeType==3 and len(item.nodeValue.strip())>0:
tmpTextValue=item.nodeValue.strip()
print 333,tmpTextValue

这是部分打印信息:
0
333 MSXML 5.0 SDK
222
222
tmpTextValue是先赋值的,怎么后面访问是又为空呢?
...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
greex 2013-05-28
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/330115938
greex 2013-05-22
  • 打赏
  • 举报
回复
def OnlyCharNum(s,oth=''): s = s.lower(); fomart = 'abcdefghijklmnopqrstuvwxyz013456789' for c in s: if not c in fomart: s = s.replace(c,''); return s;
greex 2013-05-22
  • 打赏
  • 举报
回复
import os import sys import re from xml.dom import minidom def keyValueToName(keyValue): return keyValue.replace("-","") class NodeInfo(): def __init__(self,node): self.__node=node self.__allChildNodes=[] for item in self.__node.childNodes: if(item.nodeType==1): self.__allChildNodes.append(self.__itemToNodeInfo__(item)) def allChildNodes(self): return self.__allChildNodes def getAttribute(self,name): return self.__node.getAttribute(name) def __itemToNodeInfo__(self,item): tmpNodeInfo=NodeInfo(item) setattr(tmpNodeInfo,keyValueToName(tmpNodeInfo.tagName()),tmpNodeInfo.allChildNodes()) for itemKey in item.attributes.keys(): setattr(tmpNodeInfo,keyValueToName(itemKey),item.getAttribute(itemKey)) return tmpNodeInfo def findAllNodeByName(self,name): retItem=[] tmpNodeInfo=self.__node.getElementsByTagName(name) for item in tmpNodeInfo: if item.parentNode not in tmpNodeInfo: retItem.append(self.__itemToNodeInfo__(item)) return retItem def __findNodebyName__(self,root,name): for item in root.childNodes: if(item.nodeType==1): if(item.nodeName==name): return self.__itemToNodeInfo__(item) tmpNodeInfo=self.__findNodebyName__(item,name) if tmpNodeInfo!=None: return tmpNodeInfo return None def findNodebyName(self,name): return self.__findNodebyName__(self.__node,name) def ChildNodeByName(self,name): for item in self.__allChildNodes: if item.tagName()==name: return item return None def ChildNodeByIndex(self,index): for item in self.__allChildNodes: if index==0: return item index=index-1 return None def tagName(self): return self.__node.nodeName def xmlMiniParse(fName): rootHand=minidom.parse(fName) for item in rootHand.childNodes: if(item.nodeType==1): tmpNodeInfo=NodeInfo(item) setattr(tmpNodeInfo,keyValueToName(tmpNodeInfo.tagName()),tmpNodeInfo.allChildNodes()) return tmpNodeInfo
angel_su 2013-05-20
  • 打赏
  • 举报
回复
class nodeInfo(): def __init__(self,parentNode,node): self.__node=node self.__allChildNodes=[] tmpTextValue='' print 000 for item in self.__node.childNodes: if(item.nodeType==1): tmpNodeInfo=nodeInfo(self.__node,item) 初始函数递归调用nodeInfo,输出嵌套了自然看了头疼,貌似直接操作模块的api不是很好嘛,自己搞嵌套数据,不好使的说...
greex 2013-05-19
  • 打赏
  • 举报
回复
完整如下: #!/usr/bin/python #coding=utf8 from xml.dom import minidom class nodeInfo(): def __init__(self,parentNode,node): self.__node=node self.__allChildNodes=[] tmpTextValue='' print 000 for item in self.__node.childNodes: if(item.nodeType==1): tmpNodeInfo=nodeInfo(self.__node,item) setattr(tmpNodeInfo,tmpNodeInfo.tagName(),tmpNodeInfo.allChildNodes()) for itemKey in item.attributes.keys(): setattr(tmpNodeInfo,itemKey,item.getAttribute(itemKey)) print 222,tmpTextValue if(len(tmpTextValue) > 0): setattr(tmpNodeInfo,'textValue',tmpTextValue) self.__allChildNodes.append(tmpNodeInfo) elif item.nodeType==3 and len(item.nodeValue.strip())>0: tmpTextValue=item.nodeValue.strip() print 333,tmpTextValue def allChildNodes(self): return self.__allChildNodes def getAttribute(self,name): return self.__node.getAttribute(name) def ChildNodeByName(self,name): for item in self.__allChildNodes: if item.tagName()==name: return item return None def ChildNodeByIndex(self,index): for item in self.__allChildNodes: if index==0: return item index=index-1 def tagName(self): return self.__node.nodeName def xmlMiniParse(fName): rootHand=minidom.parse(fName) for item in rootHand.childNodes: if(item.nodeType==1): tmpNodeInfo=nodeInfo(rootHand,item) setattr(tmpNodeInfo,tmpNodeInfo.tagName(),tmpNodeInfo.allChildNodes()) return tmpNodeInfo def printInfo(node): for item in node.allChildNodes(): print dir(item) printInfo(item) def test1(): testFile=xmlMiniParse("1.xml") #print dir(testFile.toc[0].book[0]) print dir(testFile.root[0]) if __name__=="__main__": test1()

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧