使用Python解析XML以打印值

时间:2019-04-05 14:04:08

标签: python xml parsing

我有一个XML文件,其中包含通常与勒索软件和恶意软件相关联的文件名和文件扩展名。

使用Python,我想解析“模式值”以仅打印“模式值”内部包含的值。目的是输出到一个简单的文本文件,在每一行中显示文件名或文件扩展名。

我试图在Notepad ++中使用宏,但这是失败的。我是Python新手,我想使用Python完成此操作

下面是XML文件:

<?xml version="1.0" ?>
<Root >
    <Header DatabaseVersion = '2.0' ></Header>
    <QuotaTemplates ></QuotaTemplates>
    <DatascreenTemplates ></DatascreenTemplates>
    <FileGroups >
        <FileGroup Name = 'Anti-Ransomware%sFile%sGroups' Id = '{367CFFB7-DDED-4AA8-8E17-203B6B97F411}' Description = '' >
            <Members >
                <Pattern PatternValue = '!!%sRETURN%sFILES%s!!.txt' ></Pattern>
                <Pattern PatternValue = '!!!%sHOW%sTO%sDECRYPT%sFILES%s!!!.txt' ></Pattern>
                <Pattern PatternValue = '!!!%sREAD%sTHIS%s-%sIMPORTANT%s!!!.txt' ></Pattern>
                <Pattern PatternValue = '!!!!!ATENÇÃO!!!!!.html' ></Pattern>
                <Pattern PatternValue = '!!!!!SAVE%sYOUR%sFILES!!!!.txt' ></Pattern>
                <Pattern PatternValue = '!!!-WARNING-!!!.html' ></Pattern>
                <Pattern PatternValue = '!!!-WARNING-!!!.txt' ></Pattern>
                <Pattern PatternValue = '!!!GetBackData!!!.txt' ></Pattern>
                <Pattern PatternValue = '!!!README!!!*.rtf' ></Pattern>
                <Pattern PatternValue = '!!!READ_TO_UNLOCK!!!.TXT' ></Pattern>
                <Pattern PatternValue = '!!!SAVE%sYOUR%sFILES!.bmp' ></Pattern>
                <Pattern PatternValue = '!##%sDECRYPT%sFILES%s##!.txt' ></Pattern>
                <Pattern PatternValue = '!#_DECRYPT_#!.inf' ></Pattern>
                <Pattern PatternValue = '!DMALOCK3.0*' ></Pattern>
                <Pattern PatternValue = '!Decrypt-All-Files-*.txt' ></Pattern>
                <Pattern PatternValue = '!Please%sRead%sMe!.txt' ></Pattern>
                <Pattern PatternValue = '!READ.htm' ></Pattern>
                <Pattern PatternValue = '!Recovery_*.html' ></Pattern>
                <Pattern PatternValue = '!Recovery_*.txt' ></Pattern>
                <etc.../>
            </Members>
        </FileGroup>
    </FileGroups>
</Root>

同样,目标是在新行上的文本文件中输出每个文件名/文件扩展名。例如

test.malware
test.ransomware 
test.virus
etc
etc
etc

预先感谢您的协助

1 个答案:

答案 0 :(得分:0)

用于python的标准xml解析器通常是xml.etree.ElementTree库。

基本用法是首先解析xml,这可以从文件名或字符串完成(如果您已经以其他方式读取文件(或以其他方式生成字符串,例如:从端口或东西)。

dimnames

然后,您在如何找到感兴趣的元素方面有很多选择,但是我建议使用一些内置搜索工具,例如ElementTree.iterfind()

import xml.etree.ElementTree as ET
tree = ET.parse('myxmlfile.xml')

根据结构的不同,此搜索可能没有足够的选择性,尽管您可以首先找到所需的部分(文件组的成员或非成员等),然后从那里进行搜索。