Сегодня я намеревался проанализировать RDL-файл SSRS (XML) с использованием Python для сбора данных DataSet и Query. Недавний проект заставил меня вернуться к различным отчетам и источникам данных с целью объединения и очистки того, что мы опубликовали.
Мне удалось использовать этот скрипт для создания файла CSV со следующими столбцами:
системный путь | имя файла отчета | тип команды | текст команды |
Это не очень элегантно, но работает.
То, что я надеюсь сделать с этим постом, является просьбой к любому из вас, экспертов, которые уже попробовали это или уже имеют опыт синтаксического анализа XML с Python, чтобы попытаться очистить его и предоставить способность:
- Включить заголовки, которые будут тегами XML
- Включить имя набора данных в столбец
- Доставить результаты в один файл
Вот полный код в моем файле "rdlparser.py":
import sys, os
from xml.dom import minidom
xmldoc = minidom.parse(sys.argv[1])
content = ""
TargetFile = sys.argv[1].split(".", 1)[0] + ".csv"
numberOfQueryNodes = 0
queryNodes = xmldoc.getElementsByTagName('Query')
numberOfQueryNodes = queryNodes.length -1
while (numberOfQueryNodes > -1):
content = content + os.path.abspath(sys.argv[1])+ '|'+ sys.argv[1].split(".", 1)[0]+ '|'
outputNode = queryNodes.__getitem__(numberOfQueryNodes)
children = [child for child in outputNode.childNodes if child.nodeType==1]
numberOfQueryNodes = numberOfQueryNodes - 1
for node in children:
if node.firstChild.nodeValue != '\n ':
if node.firstChild.nodeValue != 'true':
content = content + node.firstChild.nodeValue + '|'
content = content + '\n'
fp = open(TargetFile, 'wb')
fp.write(content)
fp.close()