|  | @@ -31,27 +31,30 @@ def countElements(xmlRoot,xPath):
 | 
	
		
			
				|  |  |        i=i+1
 | 
	
		
			
				|  |  |     return i-1
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +def mergePaths(corePath,subPath):
 | 
	
		
			
				|  |  | +   if len(corePath)>0:
 | 
	
		
			
				|  |  | +      if len(subPath)>0:
 | 
	
		
			
				|  |  | +         return '/'.join([corePath,subPath])
 | 
	
		
			
				|  |  | +      return corePath
 | 
	
		
			
				|  |  | +   return subPath
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def getVal(xmlRoot,aliasVal,xPath=''):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |     q=aliasVal.split(':')
 | 
	
		
			
				|  |  |     xName=q[0]
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -   if len(xPath)>0:
 | 
	
		
			
				|  |  | -      if len(xName)>0:
 | 
	
		
			
				|  |  | -         elementPath='/'.join([xPath,xName])
 | 
	
		
			
				|  |  | -      else:
 | 
	
		
			
				|  |  | -         elementPath=xPath
 | 
	
		
			
				|  |  | -   else:
 | 
	
		
			
				|  |  | -      elementPath=xName
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +   elementPath=mergePaths(xPath,xName)
 | 
	
		
			
				|  |  |     attributeName=q[1]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#find number of elements with this path
 | 
	
		
			
				|  |  | -   n=countElements(xmlRoot,elementPath) 
 | 
	
		
			
				|  |  | +   eList=[elementPath]
 | 
	
		
			
				|  |  | +   if xPath[-1]!=']':
 | 
	
		
			
				|  |  | +      n=countElements(xmlRoot,elementPath) 
 | 
	
		
			
				|  |  | +      eList=[f'{elementPath}[{i+1}]' for i in range(n)]
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  | +   print(eList)
 | 
	
		
			
				|  |  |     try:
 | 
	
		
			
				|  |  | -      return [xmlRoot.find(f'{elementPath}[{i+1}]').get(attributeName) for i in range(n)]
 | 
	
		
			
				|  |  | +      return [xmlRoot.find(e).get(attributeName) for e in eList]
 | 
	
		
			
				|  |  |     except AttributeError:
 | 
	
		
			
				|  |  | -      return [None]
 | 
	
		
			
				|  |  | +      return None
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def updateTxt(txt,replacePatterns):
 | 
	
		
			
				|  |  |     for x in replacePatterns:
 | 
	
	
		
			
				|  | @@ -142,9 +145,14 @@ def importXML(importXLSX,pars,xmlRoot,dryRun=True):
 | 
	
		
			
				|  |  |     vals={}
 | 
	
		
			
				|  |  |     for f in fields:
 | 
	
		
			
				|  |  |        try:
 | 
	
		
			
				|  |  | -         vals[f]=getVal(xmlRoot,alias[f],xPath)
 | 
	
		
			
				|  |  | +         x=getVal(xmlRoot,alias[f],xPath)
 | 
	
		
			
				|  |  | +         if not x:
 | 
	
		
			
				|  |  | +            continue
 | 
	
		
			
				|  |  |           if not allowMultiple:
 | 
	
		
			
				|  |  | -            vals[f]=vals[f][0:1]
 | 
	
		
			
				|  |  | +            x=x[0:1]
 | 
	
		
			
				|  |  | +         n=len(x)
 | 
	
		
			
				|  |  | +         print('{}[{}]: {}'.format(f,n,x))
 | 
	
		
			
				|  |  | +         vals[f]=x
 | 
	
		
			
				|  |  |        except KeyError:
 | 
	
		
			
				|  |  |           print(f'Alias for field {f} not found')
 | 
	
		
			
				|  |  |           continue
 |