如何创建 XML 解析器?

How to create an XML Parser?

情况:

我正在使用 Nmap 进行网络扫描,我想创建一个脚本,在 XML 中获取一些 Nmap 输出并对其进行解析,并基于此打印出我想要的信息。

问题描述:

这个解析器应该:

结论:

我需要构建一个具有上述功能的解析器,我该如何实现它? 或者,如果可能,是否有任何现成的解决方案具有所需的功能?

编辑 1: 我想使用 bash 脚本,bash 脚本是首选答案,但我也愿意使用其他语言。

处理nmap结果首先想到的是Zenmap, but that's more of a GUI for nmap. You might want to check out nmap-parse,它是一个命令行工具,似乎提供了你想要的东西;虽然我自己从未使用过它,所以我不能保证。

我应该指出,如果您对 Python 有点熟悉,那么创建一个自定义脚本来解析 nmap 输出是非常简单的。这是我在查看 Python xml module and the nmap XML output:

的文档后创建的示例
import xml.etree.ElementTree as ET
tree = ET.parse('output.xml')
root = tree.getroot()

for host in filter(lambda h: h.tag == 'host', root):
    status = host.find('status')
    address = host.find('address')
    print('Host', address.attrib['addr'], 'is', status.attrib['state'])