如何创建 XML 解析器?
How to create an XML Parser?
情况:
我正在使用 Nmap 进行网络扫描,我想创建一个脚本,在 XML 中获取一些 Nmap 输出并对其进行解析,并基于此打印出我想要的信息。
问题描述:
这个解析器应该:
能够接受给定的输入并产生输出
输入应该是一个 XML 文件。
输出应该是以下两个之一:
- 能够在终端上打印文本
- 能够将处理后的信息输出到文本文件,或 HTML 文件。
结论:
我需要构建一个具有上述功能的解析器,我该如何实现它?
或者,如果可能,是否有任何现成的解决方案具有所需的功能?
编辑 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'])
情况:
我正在使用 Nmap 进行网络扫描,我想创建一个脚本,在 XML 中获取一些 Nmap 输出并对其进行解析,并基于此打印出我想要的信息。
问题描述:
这个解析器应该:
能够接受给定的输入并产生输出
输入应该是一个 XML 文件。
输出应该是以下两个之一:
- 能够在终端上打印文本
- 能够将处理后的信息输出到文本文件,或 HTML 文件。
结论:
我需要构建一个具有上述功能的解析器,我该如何实现它? 或者,如果可能,是否有任何现成的解决方案具有所需的功能?
编辑 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'])