我今天开始打算使用 Python 解析 SSRS RDL 文件 (XML) 以收集 DataSet 和 Query 数据。最近的一个项目让我回溯了各种报告和数据源,目的是巩固和清理我们发布的内容。
我能够使用此脚本创建包含以下列的 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()