コード例 #1
0
ファイル: ActionXml.py プロジェクト: artwebs/awspy
class ActionXml(Action):
    __dom=None;
    __root=None;
    __args=None;

    def __init__(self):
        self.init();
        
    def getList(self,data,items,args=None):
        self.appendAttribute("type", "list")
        args.put('count',str(data.size()))
        self.initArgs(args);
        rows=self.appendElement('list')
        for i in range(0,data.size()):
            row=self.appendElement('item')
            for j in range(0,items.size()):
                yitem=str(items.getvalue(num=j))
                p = re.compile(r'\[(\w+)\]')
                for m in p.finditer(yitem):
                    yitem=yitem.replace(str(m.group()),str(data.getvalue(i,str(m.group(1)))))
                self.appendElement(items.getkey(num=j),yitem,row)
            rows.appendChild(row)
        self.__root.appendChild(rows)
        
    def getPageList(self,data,items,args=None):
        self.appendAttribute('type', 'pagelist')
        rowsCount=data.getvalue(key='rowsCount')
        rowsData=data.getvalue(key="rows")
        args.put('count',str(rowsCount))
        self.initArgs(args);
        rows=self.appendElement('list')
        for i in range(0,rowsData.size()):
            row=self.appendElement('item')
            for j in range(0,items.size()):
                yitem=str(items.getvalue(num=j))   
                p = re.compile(r'\[(\w+)\]')
                for m in p.finditer(yitem):
                    yitem=yitem.replace(str(m.group()),str(rowsData.getvalue(i,str(m.group(1)))))                
                self.appendElement(items.getkey(num=j),yitem,row)           
            rows.appendChild(row)
        self.__root.appendChild(rows)
        
        
    def getResult(self,args):
        self.initArgs(args);
        
    def getInfo(self,data,items,args=None):
        self.appendAttribute('type', 'info')
        args.put('count',str(data.size()))
        self.initArgs(args);
        rows=self.appendElement('list')
        for i in range(0,data.size()):
            content="";
            for j in range(0,items.size()):
                content+="【"+items.getvalue(num=j)+"】"+data.getvalue(i,items.getkey(j));     
                if j is not items.size()-1:
                    content+="\n";
            self.appendElement("item", content, rows)
        self.__root.appendChild(rows)
        
    def init(self):
        impl = xml.dom.minidom.getDOMImplementation()
        self.__dom=impl.createDocument(None, "doc", None)
        self.__root=self.__dom.documentElement
        
    def initArgs(self,args):
        self.__args=args;
        if self.__args is None:
            self.__args=BinMap()
            self.__args.put('code', '1');
            self.__args.put('message', '数据下载成功');
        else:
            if not self.__args.isexists('code'):
                self.__args.put('code', '1');
            if not self.__args.isexists('message'):
                self.__args.put('message', '数据下载成功');
            if not self.__args.isexists('count'):
                self.__args.put('count', '0');
        
        for i in range(0,self.__args.size()):
            self.appendElement(self.__args.getkey(i), self.__args.getvalue(num=i))
            
    def appendElement(self,item,text=None,parent=None):
        element=self.__dom.createElement(item);
        if text is not None:
            text=self.__dom.createTextNode(text);
            element.appendChild(text);
        if parent is None:
            self.__root.appendChild(element);
        else:
            parent.appendChild(element);
        return element;
    
    def appendAttribute(self,key,value,element=None):
        if element is not None:
            element.setAttribute(key, value)
        else:
            self.__root.setAttribute(key, value)
    
    def reponse(self):
        return self.__dom.toxml('utf-8');