感谢您查看此问题。我不确定,这是否是发布此帖子的正确论坛。如果没有,请告诉我发布此主题的正确论坛。
我们有一个复杂的XML消息(XML格式的数据)。我们正在探索一种方法来提取此XML消息的所有XPATH及其元素/属性级数据内容。我们尝试使用XMLSPY,& xmltwig,但没有运气。如果我们提供XPATH输入,Xml_grep会提取数据。 xml_grep中没有选项可以浏览XML消息的所有XPATHS。
我有完整的XML消息。我想生成一个列表/报告
1)XML消息的所有Xpath (浏览所有XPATH和XML消息列表)
2)Xpath,此XPATH的数据内容(浏览所有XPATH,数据内容并列出XML消息)
这是一个示例(输入XML消息)
<?xml version="1.0"?>
<PARTS>
<TITLE>Computer Parts</TITLE>
<PART>
<ITEM>Motherboard</ITEM>
<MANUFACTURER>ASUS</MANUFACTURER>
<MODEL>P3B-F</MODEL>
<COST> 123.00</COST>
</PART>
<PART>
<ITEM>Video Card</ITEM>
<MANUFACTURER>ATI</MANUFACTURER>
<MODEL>All-in-Wonder Pro</MODEL>
<COST> 160.00</COST>
</PART>
<PART>
<ITEM>Sound Card</ITEM>
<MANUFACTURER>Creative Labs</MANUFACTURER>
<MODEL>Sound Blaster Live</MODEL>
<COST> 80.00</COST>
</PART>
<PART>
<ITEM>inch Monitor</ITEM>
<MANUFACTURER>LG Electronics</MANUFACTURER>
<MODEL> 995E</MODEL>
<COST> 290.00</COST>
</PART>
</PARTS>
所需的输出 - &gt;我手动创建了以下XML列表
/PARTS/TITLE Computer Parts
/PARTS/PART[1]/ITEM Motherboard
/PARTS/PART[1]/MANUFACTURER ASUS
/PARTS/PART[1]/MODEL P3B-F
/PARTS/PART[1]/COST 123.00
/PARTS/PART[2]/ITEM Video Card
/PARTS/PART[2]/MANUFACTURER ATI
............
..............
..................
...................
是否有任何开源产品可以为XML消息生成此类报告?
有哪些方法可以提取XPATH / XPATH,数据内容?
感谢您允许选择此论坛的大脑。
答案 0 :(得分:0)
仅此而已,我写了一些在python中完成此操作的东西-输出到csv,以管道分隔。随意使用它。很高兴回答任何问题,但不要期望立即得到答复。
from lxml import etree, objectify
def parseXML(xmlFile, outputFile):
"""
Parse the XML function
"""
with open(xmlFile) as fobj:
xml = fobj.read()
f = open(outputFile,'w') #open write to file
root = etree.fromstring(xml)
f.write("%s|%s\n" %("Field", "Value"))
tree = etree.ElementTree(root)
for e in root.iter():
f.write("%s|%s\n" %(tree.getpath(e), e.text))
f.close()
if __name__ == "__main__":
print ('Loading variables...')
input = '16a.xml'
output = input + '.csv'
parseXML(input,output)