오늘 데이터 세트 및 쿼리 데이터를 수집하기 위해 Python을 사용하여 SSRS RDL 파일 (XML)을 구문 분석하기위한 목적을 설정했습니다. 최근 프로젝트를 통해 내가 게시 한 내용을 통합하고 정리할 목적으로 다양한 보고서 및 데이터 소스를 추적 할 수 있습니다.Python을 사용하여 RDL에서 DataSet 및 쿼리 데이터를 긁음
이 스크립트를 사용하여 다음 열을 포함하는 CSV 파일을 만들 수있었습니다. 시스템 경로 | 보고서 파일 이름 | 명령 유형 | 명령 텍스트 |
매우 우아하지는 않지만 작동합니다.
나는이 게시물로 할 수 있기를 바라고있다. 이미이 도구를 사용해 보았거나 Python으로 XML 구문 분석을 해본 경험이있는 전문가 중 누구 에게라도 권할 만하다. 능력에 :
- 는 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()
는이 .ps1 파일에 그걸 얻기 위해 약간의 변화 아름답게 근무 : 나는 전문가 수준하지 않습니다 확신하지만, 나는 (#으로 시작하는 줄은 주석이다) 꽤 잘 나온 것 같아요. 나는 그것을 바로 버리고 그것을 실행하려고 노력했다. 그리고 powershell은 "빈 파이프 요소"를 좋아하지 않았다. 그래서 마지막 $ files 명령을 같은 줄에 넣었다. PowerShell로 많은 노출을 경험하지는 못했지만이 기능을 통해 나를 끌어 들일 수 있습니다. 도와 주셔서 감사합니다 JasonHorner! – Vinnie