Parase XML данных из вывода NMAP с использованием c# и этой библиотеки лиц NmapXmlParser - PullRequest
0 голосов
/ 01 марта 2020

Разработчиком этой конкретной библиотеки является MIA. https://github.com/Kamiizumi/NmapXmlParser

Чтобы проверить проблему, возьмите его библиотеку (NmapXmlParser) из Nu-Get и убедитесь, что у вас есть

using System.Xml.Serialization;
using System.IO;
using Xunit;

Код, который он дает на примере выглядит так:

var xmlSerializer = new XmlSerializer(typeof(nmaprun));
var result = default(nmaprun);

using (var xmlStream = new StreamReader("NmapResults.xml"))
{
    result = xmlSerializer.Deserialize(xmlStream) as nmaprun;
}

Console.WriteLine(result.args);

Это работает при получении элементов внутри объекта nmaprun. Он не приводит никаких других примеров, поэтому я предположил, что если бы я хотел проверить объект хоста, я бы изменил все экземпляры nmaprun в приведенном выше коде на хост. А затем в строке консоли измените на элемент внутри хост-объекта, например,

var xmlSerializer = new XmlSerializer(typeof(host));
var result = default(host);

using (var xmlStream = new StreamReader("NmapResults.xml"))
{
    result = xmlSerializer.Deserialize(xmlStream) as host;
}

Console.WriteLine(result.reason);

Intellisense внутри Console.Writeline хочет автозаполнение элементов, поэтому я чувствую, что он настроен правильно, но я продолжаю получать эта ошибка.

System.InvalidOperationException: 'Ошибка в XML документе (5, 2).' Внутреннее исключение InvalidOperationException: не ожидалось.

Вы можете использовать пример XML в его Github, если у вас нет выходного файла Nmap xml

...