def textToXML(self): """Преобразуем текст в XML""" areas = [] if self.text.strip(): self.splitToAllArea(self.text, areas, self.reOpen, self.reClose, self.reCloseArea,self.reComment,self.reSepFields) docObj = xmlDoc() # Создание объекта документ c пустым разделителем между полями docObj.createDoc(self.configName, self.configVersion) if not areas: return docObj self.createXML(areas, docObj.getNodeBody(), docObj) return docObj
def textToXML(self): """Преобразуем текст в XML""" class area: def __init__(self): self.header = False self.start = False self.fields = [] self.end = False areas = [] oneArea = area() oneArea.header = "" oneArea.start = "" oneArea.fields = [self.text] oneArea.end = "" areas.append(oneArea) docObj = xmlDoc() # Создание объекта документ c пустым разделителем между полями docObj.createDoc(self.configName, self.configVersion) if not areas: return docObj self.createXML(areas, docObj.getNodeBody(), docObj) return docObj
def textToXML(self): docObj = xmlDoc() docObj.createDoc(self.configName, self.configVersion) if self.text: nodeBody = docObj.getNodeBody() fields = self.splitToFields(self.text) for field in fields: if field.name != False: fieldXML = self.createFieldTerm(field.name, field.value, field.br, docObj) nodeBody.appendChild(fieldXML) if field.br[-1] == "\n": fieldXMLBr = docObj.createField("br",[], "",[], False, False) nodeBody.appendChild(fieldXMLBr) elif field.comment != False: fieldXML = docObj.createField("comment", [field.comment], "", [], False, False) nodeBody.appendChild(fieldXML) elif field.br != False: brText = field.br.replace("\n","") if brText: fieldXML = docObj.createField('br', [brText], "", [], False, False) else: fieldXML = docObj.createField('br', [], "", [], False, False) nodeBody.appendChild(fieldXML) return docObj
def _textToXML(self): """Преобразует текст в XML""" blTmp = self.blocTextObj.findArea(self.text,self.reHeader,self.reArea) blocs = self.getFullAreas(blTmp) headers = [] startHeaders = [] finHeaders = [] docObj = xmlDoc() docObj.createDoc(self.configName, self.configVersion) rootNode = docObj.getNodeBody() # Если пустой текст то создаем пустой документ if not blocs: return docObj for h in blocs[0]: headers.append(h.rstrip()) bodys = blocs[1] z = 0 for h in headers: if not bodys[z]: z += 1 continue areaAction = False if h: if h[0] == "!": header = self.removeSymbolTerm(h.strip()) headerQuote = self.removeSymbolTerm(h) docObj.createCaption(header,[headerQuote,""]) areaAction = "drop" elif h[0] == "-": header = self.removeSymbolTerm(h.strip()) headerQuote = self.removeSymbolTerm(h) docObj.createCaption(header,[headerQuote,""]) areaAction = "replace" else: docObj.createCaption(h.strip(), [h.rstrip(),""]) else: docObj.createCaption(h.strip(), [h.rstrip(),""]) if "\n" in blocs[0][z]: resHead = self.reComment.search(h) if resHead: docObj.createField('comment', blocs[0][z][resHead.start():]) else: docObj.createField('br') fields = self._splitToFields(bodys[z]) for f in fields: if f.name != False and f.value!=False and f.br!=False: # Обработка условий для samba if f.name[0] == "!" or f.name[0] == "-" or\ f.name[0] == "+": qns = self.removeSymbolTerm(f.br) xmlField = docObj.createField("var", [qns], f.name[1:], [f.value]) if f.name[0] == "!": # Удаляемое в дальнейшем поле docObj.setActionField(xmlField, "drop") elif f.name[0] == "+": # Добавляем уникальное поле xmlField.setAttribute("type", "seplist") docObj.setActionField(xmlField, "join") else: docObj.createField("var",[f.br.replace("\n","")], f.name, [f.value]) docObj.createField('br') elif f.comment != False: docObj.createField('comment', [f.comment]) elif f.br != False: docObj.createField('br', [f.br.replace("\n","")]) if h.strip(): area = docObj.createArea() if areaAction: docObj.setActionArea(area, areaAction) rootNode.appendChild(area) else: fieldsNodes = docObj.tmpFields.getFields() for fieldNode in fieldsNodes: rootNode.appendChild(fieldNode) docObj.clearTmpFields() z += 1 return docObj
def _textToXML(self): """Преобразует текст в XML""" blTmp = self.blocTextObj.findBloc(self.text,self.reHeader,self.reBody) blocs = self.getFullAreas(blTmp) headers = [] startHeaders = [] finHeaders = [] docObj = xmlDoc() docObj.createDoc(self.configName, self.configVersion) rootNode = docObj.getNodeBody() # Если пустой текст то создаем пустой документ if not blocs: return docObj for h in blocs[0]: listfinH = h.split("]") finH = listfinH[0] if "[" in finH: startHeaders.append(finH + "]") else: startHeaders.append(finH) if len(listfinH) == 2: finHeaders.append(listfinH[1]) else: finHeaders.append("") headers.append(finH.replace("[","").replace("]","").strip()) bodys = blocs[1] z = 0 for h in headers: if not bodys[z]: z += 1 continue areaAction = False if h: if h[0] == "!": docObj.createCaption(h[1:], [startHeaders[z],""]) areaAction = "drop" elif h[0] == "-": docObj.createCaption(h[1:], [startHeaders[z],""]) areaAction = "replace" else: docObj.createCaption(h, [startHeaders[z],""]) else: docObj.createCaption(h, [startHeaders[z],""]) if "\n" in blocs[0][z]: if self.reComment.search(finHeaders[z]): docObj.createField('comment', [finHeaders[z]]) elif not finHeaders[z].strip() and\ finHeaders[z].replace("\n",""): docObj.createField('br', [finHeaders[z].replace("\n","")]) else: docObj.createField('br') fields = self._splitToFields(bodys[z]) for f in fields: if f.name != False and f.value!=False and f.br!=False: # Обработка условий для samba if f.name[0] == "!" or f.name[0] == "-" or\ f.name[0] == "+": qns = self.removeSymbolTerm(f.br) xmlField = docObj.createField("var", [qns], f.name[1:], [f.value]) if f.name[0] == "!": # Удаляемое в дальнейшем поле docObj.setActionField(xmlField, "drop") else: docObj.createField("var",[f.br.replace("\n","")], f.name, [f.value]) docObj.createField('br') elif f.comment != False: docObj.createField('comment', [f.comment]) elif f.br != False: docObj.createField('br', [f.br.replace("\n","")]) if h.strip(): area = docObj.createArea() if areaAction: docObj.setActionArea(area, areaAction) rootNode.appendChild(area) else: fieldsNodes = docObj.tmpFields.getFields() for fieldNode in fieldsNodes: rootNode.appendChild(fieldNode) docObj.clearTmpFields() z += 1 return docObj