То, что вы ищете, не будет анализатором XML. XML очень строг в отношении вложения, закрытия и т. Д. В одном из ответов предлагается Tag Soup . Это хорошее предложение, хотя технически оно гораздо ближе к лексеру, чем к парсеру. Если все, что вам нужно из содержимого XML-ish, это поток событий без какой-либо проверки, тогда накатить собственное решение почти тривиально. Просто прокрутите ввод, потребляя контент, который соответствует регулярным выражениям (именно это и делает Tag Soup).
Проблема в том, что лексер не сможет предоставить вам многие функции, которые вы хотите получить от парсера (например, создание древовидного представления входных данных). Вы должны реализовать эту логику самостоятельно, потому что такой «снисходительный» синтаксический анализатор не сможет определить, как обрабатывать случаи, подобные следующему:
<parent>
<child>
</parent>
</child>
Подумайте об этом: какое дерево ожидает , чтобы получить из этого? На этот вопрос нет вменяемого ответа, именно поэтому синтаксический анализатор не очень поможет.
Это не значит, что вы не можете использовать Tag Soup (или свой собственный рукописный лексер) для создания некоторой древовидной структуры на основе этого ввода, но реализация будет очень хрупкой. С древовидными форматами, такими как XML, у вас действительно нет выбора, кроме как быть строгим, в противном случае становится практически невозможным получить разумный результат (это одна из причин того, почему браузеры испытывают трудности с совместимостью).