def writeExportFile(strSQL, strFileName): dbCon = sqlite.connect(videoDB) dbCur = dbCon.cursor() dbCur.execute(strSQL) xmlObj = ET.Element("watched") for row in dbCur: child = ET.SubElement(xmlObj, "file") child.text = row[0] episodeFileObj = open(strFileName, 'w') episodeFileObj.write(ET.tostring(xmlObj)) episodeFileObj.close()
def Check_Gmp_xml(self, filepath): self.ProjectFile = filepath # xml 요소 값을 배열에 넣음 self.Set_XML_element() self.Set_XML_element_SubWatershed() self.Set_XML_element_WatchPoints() self.Set_XML_element_FlowControlGrid() self.Set_XML_element_GreenAmptParameter() self.Set_XML_element_SoilDepth() self.Set_XML_element_LandCover() # xml 파싱 doc = ET.parse(self.ProjectFile) root = doc.getroot() GRMProject = ET.Element("GRMProject") GRMProject.set("xmlns", "http://tempuri.org/GRMProject.xsd") ProjectSettings = ET.SubElement(GRMProject, "ProjectSettings") for i in range(0, len(self.XML_element)): for element in root.findall( '{http://tempuri.org/GRMProject.xsd}ProjectSettings'): Datavalue = element.findtext( "{http://tempuri.org/GRMProject.xsd}" + self.XML_element[i]) if self.XML_element[i] == "GRMSimulationType" and ( Datavalue == "" or Datavalue == None): Datavalue = "SingleEvent" if self.XML_element[i] == "LandCoverDataType" and ( Datavalue == "" or Datavalue == None): Datavalue = "File" if self.XML_element[i] == "SoilTextureDataType" and ( Datavalue == "" or Datavalue == None): Datavalue = "File" if self.XML_element[i] == "SoilDepthDataType" and ( Datavalue == "" or Datavalue == None): Datavalue = "File" if self.XML_element[i] == "RainfallDataType" and ( Datavalue == "" or Datavalue == None): Datavalue = "TextFileASCgrid" if self.XML_element[i] == "FlowDirectionType" and ( Datavalue == "" or Datavalue == None): Datavalue = "StartsFromE_TauDEM" if self.XML_element[i] == "IsParallel" and (Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "MaxDegreeOfParallelism" and ( Datavalue == "" or Datavalue == None): Datavalue = "-1" if self.XML_element[i] == "SimulStartingTime" and ( Datavalue == "" or Datavalue == None): Datavalue = "0" if self.XML_element[i] == "IsFixedTimeStep" and ( Datavalue == "" or Datavalue == None): Datavalue = "false" if self.XML_element[i] == "'SimulateInfiltration'" and ( Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "SimulateSubsurfaceFlow" and ( Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "SimulateBaseFlow" and ( Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "SimulateFlowControl" and ( Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "CrossSectionType" and ( Datavalue == "" or Datavalue == None): Datavalue = "CSSingle" if self.XML_element[i] == "SingleCSChannelWidthType" and ( Datavalue == "" or Datavalue == None): Datavalue = "CWGemeration" if self.XML_element[i] == "BankSideSlopeRight" and ( Datavalue == "" or Datavalue == None): Datavalue = "1.5" if self.XML_element[i] == "BankSideSlopeLeft" and ( Datavalue == "" or Datavalue == None): Datavalue = "1.5" if self.XML_element[i] == "MakeIMGFile" and ( Datavalue == "" or Datavalue == None): Datavalue = "false" if self.XML_element[i] == "MakeASCFile" and ( Datavalue == "" or Datavalue == None): Datavalue = "false" if self.XML_element[i] == "MakeSoilSaturationDistFile" and ( Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "MakeRfDistFile" and ( Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "MakeRFaccDistFile" and ( Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "MakeFlowDistFile" and ( Datavalue == "" or Datavalue == None): Datavalue = "true" if self.XML_element[i] == "PrintOption" and ( Datavalue == "" or Datavalue == None): Datavalue = "All" if self.XML_element[i] == "WriteLog" and (Datavalue == "" or Datavalue == None): Datavalue = "false" ET.SubElement(ProjectSettings, self.XML_element[i]).text = Datavalue GRM._SubWatershedCount = 0 for element in root.findall( '{http://tempuri.org/GRMProject.xsd}SubWatershedSettings'): SubWatershedSettings = ET.SubElement(GRMProject, "SubWatershedSettings") for i in range(0, len(self.XML_element_SubWatershed)): Datavalue = element.findtext( "{http://tempuri.org/GRMProject.xsd}" + self.XML_element_SubWatershed[i]) if self.XML_element_SubWatershed[i] == "IniSaturation" and ( Datavalue == "" or Datavalue == None): Datavalue = "1" elif self.XML_element_SubWatershed[i] == "MinSlopeOF" and ( Datavalue == "" or Datavalue == None): Datavalue = "0.0001" elif self.XML_element_SubWatershed[i] == "MinSlopeChBed" and ( Datavalue == "" or Datavalue == None): Datavalue = "0.0001" elif self.XML_element_SubWatershed[i] == "MinChBaseWidth" and ( Datavalue == "" or Datavalue == None): Datavalue = "00" elif self.XML_element_SubWatershed[i] == "ChRoughness" and ( Datavalue == "" or Datavalue == None): Datavalue = "0.045" elif self.XML_element_SubWatershed[i] == "DryStreamOrder" and ( Datavalue == "" or Datavalue == None): Datavalue = "0" elif self.XML_element_SubWatershed[i] == "IniFlow" and ( Datavalue == "" or Datavalue == None): Datavalue = "0" elif self.XML_element_SubWatershed[ i] == "UnsaturatedKType" and (Datavalue == "" or Datavalue == None): Datavalue = "Linear" elif self.XML_element_SubWatershed[ i] == "CoefUnsaturatedK" and (Datavalue == "" or Datavalue == None): Datavalue = "0.2" elif self.XML_element_SubWatershed[ i] == "CalCoefLCRoughness" and (Datavalue == "" or Datavalue == None): Datavalue = "1" elif self.XML_element_SubWatershed[ i] == "CalCoefPorosity" and (Datavalue == "" or Datavalue == None): Datavalue = "1" elif self.XML_element_SubWatershed[ i] == "CalCoefWFSuctionHead" and (Datavalue == "" or Datavalue == None): Datavalue = "1" elif self.XML_element_SubWatershed[ i] == "CalCoefHydraulicK" and (Datavalue == "" or Datavalue == None): Datavalue = "1" elif self.XML_element_SubWatershed[ i] == "CalCoefSoilDepth" and (Datavalue == "" or Datavalue == None): Datavalue = "1" if self.XML_element_SubWatershed[i] == "UserSet" and ( Datavalue == "" or Datavalue == None): Datavalue = "false" ET.SubElement( SubWatershedSettings, self.XML_element_SubWatershed[i]).text = Datavalue GRM._SubWatershedCount = GRM._SubWatershedCount + 1 GRM._WatchPointCount = 0 for element in root.findall( '{http://tempuri.org/GRMProject.xsd}WatchPoints'): WatchPoints = ET.SubElement(GRMProject, "WatchPoints") for i in range(0, len(self.XML_element_WatchPoints)): Datavalue = element.findtext( "{http://tempuri.org/GRMProject.xsd}" + self.XML_element_WatchPoints[i]) if self.XML_element_WatchPoints[i] == "Name" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_WatchPoints[i] == "ColX" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_WatchPoints[i] == "RowY" and ( Datavalue == "" or Datavalue == None): Datavalue = "" ET.SubElement(WatchPoints, self.XML_element_WatchPoints[i]).text = Datavalue GRM._WatchPointCount = GRM._WatchPointCount + 1 GRM._FlowControlCount = 0 for element in root.findall( '{http://tempuri.org/GRMProject.xsd}FlowControlGrid'): FlowControlGrid = ET.SubElement(GRMProject, "FlowControlGrid") for i in range(0, len(self.XML_element_FlowControlGrid)): Datavalue = element.findtext( "{http://tempuri.org/GRMProject.xsd}" + self.XML_element_FlowControlGrid[i]) if self.XML_element_FlowControlGrid[i] == "ColX" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "RowY" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "Name" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "ControlType" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "DT" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "FlowDataFile" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "IniStorage" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "MaxStorage" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "MaxStorageR" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "ROType" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[i] == "ROConstQ" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_FlowControlGrid[ i] == "ROConstQDuration" and (Datavalue == "" or Datavalue == None): Datavalue = "" ET.SubElement( FlowControlGrid, self.XML_element_FlowControlGrid[i]).text = Datavalue GRM._FlowControlCount = GRM._FlowControlCount + 1 GRM._GreenAmptCount = 0 for element in root.findall( '{http://tempuri.org/GRMProject.xsd}GreenAmptParameter'): GreenAmptParameter = ET.SubElement(GRMProject, "GreenAmptParameter") for i in range(0, len(self.XML_element_GreenAmptParameter)): Datavalue = element.findtext( "{http://tempuri.org/GRMProject.xsd}" + self.XML_element_GreenAmptParameter[i]) if self.XML_element_GreenAmptParameter[i] == "GridValue" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_GreenAmptParameter[i] == "USERSoil" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_GreenAmptParameter[i] == "GRMCode" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_GreenAmptParameter[ i] == "GRMTextureE" and (Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_GreenAmptParameter[ i] == "GRMTextureK" and (Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_GreenAmptParameter[i] == "Porosity" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_GreenAmptParameter[ i] == "EffectivePorosity" and (Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_GreenAmptParameter[ i] == "WFSoilSuctionHead" and (Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_GreenAmptParameter[ i] == "HydraulicConductivity" and (Datavalue == "" or Datavalue == None): Datavalue = "" ET.SubElement( GreenAmptParameter, self.XML_element_GreenAmptParameter[i]).text = Datavalue GRM._GreenAmptCount = GRM._GreenAmptCount + 1 GRM._SoilDepthCount = 0 for element in root.findall( '{http://tempuri.org/GRMProject.xsd}SoilDepth'): SoilDepth = ET.SubElement(GRMProject, "SoilDepth") for i in range(0, len(self.XML_element_SoilDepth)): if self.XML_element_SoilDepth[i] == "SoilDeptht": Datavalue = element.findtext( "{http://tempuri.org/GRMProject.xsd}SoilDepth") else: Datavalue = element.findtext( "{http://tempuri.org/GRMProject.xsd}" + self.XML_element_SoilDepth[i]) if self.XML_element_SoilDepth[i] == "GridValue" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_SoilDepth[i] == "UserDepthClass" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_SoilDepth[i] == "GRMCode" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_SoilDepth[i] == "SoilDepthClassE" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_SoilDepth[i] == "SoilDepthClassK" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_SoilDepth[i] == "SoilDeptht" and ( Datavalue == "" or Datavalue == None): Datavalue = "" ET.SubElement(SoilDepth, self.XML_element_SoilDepth[i]).text = Datavalue GRM._SoilDepthCount = GRM._SoilDepthCount + 1 GRM._LandCoverCount = 0 for element in root.findall( '{http://tempuri.org/GRMProject.xsd}LandCover'): LandCover = ET.SubElement(GRMProject, "LandCover") for i in range(0, len(self.XML_element_LandCover)): Datavalue = element.findtext( "{http://tempuri.org/GRMProject.xsd}" + self.XML_element_LandCover[i]) if self.XML_element_LandCover[i] == "GridValue" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_LandCover[i] == "UserLandCover" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_LandCover[i] == "GRMCode" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_LandCover[i] == "GRMLandCoverE" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_LandCover[i] == "GRMLandCoverK" and ( Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_LandCover[ i] == "RoughnessCoefficient" and (Datavalue == "" or Datavalue == None): Datavalue = "" if self.XML_element_LandCover[i] == "ImperviousRatio" and ( Datavalue == "" or Datavalue == None): Datavalue = "" ET.SubElement(LandCover, self.XML_element_LandCover[i]).text = Datavalue GRM._LandCoverCount = GRM._LandCoverCount + 1 ET.ElementTree(GRMProject).write(self.ProjectFile, encoding="utf-8", xml_declaration=True) with open(self.ProjectFile, 'r') as f: content = f.read() result = content.replace("SoilDeptht", "SoilDepth") f = open(self.ProjectFile, 'w') f.write(result) f.close() ## 줄바꿈과 뛰어쓰기 부분 #def indent(elem, level=0): # i = "\n" + level * " " # j = "\n" + (level - 1) * " " # if len(elem): # if not elem.text or not elem.text.strip(): # elem.text = i + " " # if not elem.tail or not elem.tail.strip(): # elem.tail = i # for subelem in elem: # indent(subelem, level + 1) # if not elem.tail or not elem.tail.strip(): # elem.tail = i # else: # if level and (not elem.tail or not elem.tail.strip()): # elem.tail = i # return elem ## 저장된 파일 다시 불러와서 줄바꿈과 정렬 하기 #doc = ET.parse(self.ProjectFile) #root = doc.getroot() #ET.register_namespace("", "http://tempuri.org/GRMProject.xsd") #indent(root) #doc.write(self.ProjectFile, encoding="utf-8", xml_declaration=True) ds = GRMCore.GRMProject() ds.ReadXml(self.ProjectFile) ds.WriteXml(self.ProjectFile) ds.Dispose()
else: description[0:140] mDesc.append(description) #Create an rss xml file #rss = PyRSS2Gen.RSS2( #title = "Python Project", #link = "http://rockhopper.monmouth.edu/cs/jchung/cs498gpl/python_project", #description = "Get the title, link, and description of each article and write them to a rss feed", #items = [] #) #Append all the elements into the items array #for i in range(len(mTitles)): # a = PyRSS2Gen.RSSItem(title = mTitles[i], link = mLinks[i], description= mDesc[i]) # rss.items.append(a) #rss.write_xml(open('cssenews.rss.xml','w')) root = ET.Element("channel") for i in range(len(mTitles)): item = ET.SubElement(root, "item") title = ET.SubElement(item, "title") title.text = mTitles[i] link = ET.SubElement(item, "link") link.text = mLinks[i] description = ET.SubElement(item, "description") description.text = mDesc[i] tree = ET.ElementTree(root) tree.write("cssenews.rss.xml")
def parseEpisodeSearch(self, html): """Parse the search result pages matching information about the episodes. Information found is inserted into self.inputtree""" #using BeautifulSoup for mathing the html. For speed, parsing is done only on the chosen tags, by using SoupStrainer #before the call to BeautifulSoup. Episode title, description and url information are stored all together #in <div class=conteudo-texto> tags in the html code trainer = SoupStrainer('div', {'class': 'conteudo-texto'}) soup = BeautifulSoup(html, parseOnlyThese=trainer) #element to hold the list of episodes found episodeslist = ET.Element(globals.EL_EPISODELIST) #for each <div class=conteudo-texto> tag, matches and store the relevant info for tag in soup.contents: #subelement to hold episode details episodedetails = ET.SubElement(episodeslist, globals.EL_EPISODEDETAILS) #match the episode title and store it as subelement of episodetails ET.SubElement(episodedetails, globals.EL_EPISODETITLE).text = tag.h2.a['title'] #match the episode url and store it as subelement of episodetails ET.SubElement(episodedetails, globals.EL_EPISODEURL).text = tag.h2.a['href'] #match episode id out of the episode url, and store it as subelement of episodetails matchstr = 'http\S*GIM(\d{6})\S*html' pattern = re.compile(matchstr) match = pattern.findall(tag.h2.a['href']) ET.SubElement(episodedetails, globals.EL_EPISODEID).text = match[0] #match episode description and store it as subelement of episodetails. The whole "contents" field of the tag is retrieved, as there #may be sub tags inside the <p> tag description = '' for piece in tag.p.contents: description += piece.string ET.SubElement(episodedetails, globals.EL_EPISODEDESCRIPTION).text = description #episodes durations are stored in <span class="tempo"> tags in the html code trainer = SoupStrainer('span', {'class': 'tempo'}) soup = BeautifulSoup(html, parseOnlyThese=trainer) #we need to iterate through the already existing episodedetails elements and insert the duration as subelement to each. iterator = episodeslist.getiterator(globals.EL_EPISODEDETAILS) for index, tag in enumerate(soup): ET.SubElement(iterator[index], globals.EL_EPISODEDURATION).text = tag.string #episodes dates are stored in <td class="coluna-data"> tags in the html code trainer = SoupStrainer('td', {'class': 'coluna-data'}) soup = BeautifulSoup(html, parseOnlyThese=trainer) #we need to iterate through the already existing episodedetails elements and insert the duration as subelement to each. iterator = episodeslist.getiterator(globals.EL_EPISODEDETAILS) for index, tag in enumerate(soup): ET.SubElement(iterator[index], globals.EL_EPISODEDATE).text = tag.string return episodeslist
def copy(elem): e = ElementTree.Element(elem.tag, elem.attrib) e.text = elem.text e.tail = elem.tail e[:] = elem return e
def writeMetaDataToXml(corpusName, outset): root = et.Element("root") ftag = et.Subelement(root, "fname") # organize le data here tree = et.ElementTree(root) tree.write("{}.xml".format(corpusName))