Доброго всем дня. С python только начинаю знакомство. Поэтому сильно не пинайте. На работе поставили задачку из xml в csv перевести файлик.
В интернете нашел пример кода. Подстроил под свои задачи, ну как смог. Вроде работает. Но вложенные теги не парсит, и как до них добраться не знаю.
Подскажите. Во вложенном файле
Элемент offer основной и их много. Поля name, description, url, price, picture, vendorCode, Param - прочитываю. А вот как получить доступ к полям
	
	
	
		
их в каждом OFFER может быть от 1 до 10 штук.

Код на python вот такой. Повторюсь слино не пинайте, только учусь. Сам код нашел на просторах интренета. И под свои нужны подработал.
	
	
	
		
			
			В интернете нашел пример кода. Подстроил под свои задачи, ну как смог. Вроде работает. Но вложенные теги не парсит, и как до них добраться не знаю.
Подскажите. Во вложенном файле
Элемент offer основной и их много. Поля name, description, url, price, picture, vendorCode, Param - прочитываю. А вот как получить доступ к полям
		Код:
	
	<color>
  <title></title>
  <image></image>
</color>
<color>
  <title></title>
  <image></image>
</color>
<color>
  <title></title>
  <image></image>
</color>
Код на python вот такой. Повторюсь слино не пинайте, только учусь. Сам код нашел на просторах интренета. И под свои нужны подработал.
		Python:
	
	import xml.dom.minidom
import csv
dom = xml.dom.minidom.parse("price.xml")
dom.normalize()
csvfile = open('output.csv', 'w', encoding='utf8')
fieldnames = ['name', 'description', 'picture', 'price', 'vendorCode']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
i=0
#while i < len(dom.getElementsByTagName("offer")):
while i < 10:  # пока для тренировки беру первые 10 элементов
  print (" ****** ", i , " ***** ")  # для наглядности разграничиваю элементы
  nodeArray = dom.getElementsByTagName("offer")[i]
  childList=nodeArray.childNodes
  j=0
  s = [ii for ii in range(100)]
  for child in childList:
      if child.nodeType==child.TEXT_NODE:
          print(child.nodeValue)
      else:
          if child.nodeName != "categoryId" :
              s[j] = child.childNodes[0].nodeValue
              #print(child.nodeName)
              #print(child.childNodes[0].nodeValue)
              j = j +1
 
  s[6] = s[6].lower()
  if s[6].find('скл-игр') >= 0:
      writer.writerow({'name': s[0], 'description': s[1], 'picture': s[2], 'price': s[3], 'vendorCode': s[6]})
   
  i = i + 1
csvfile.close()
			
				Последнее редактирование: 
				
		
	
										
										
											
	
										
									
								