Поскольку ваша проблема в том, что вы не можете использовать классы QT XML из-за его поведения, я предполагаю, что у вас нет проблем с использованием модуля QT XML в вашем проекте. Единственный способ, который я могу придумать, - это проверять код и проверять его как действительный XML (только синтаксис).
QString test = "<TestData>Valid XML</TestData>";
QString wrapper_start = "<?xml version=\"1.0\"?><dummyrootelement>";
QString wrapper_end = "</dummyrootelement>";
QDomDocument document;
if(document.setContent(wrapper_start + test + wrapper_end)) {
// Valid XML, handle test here
} else {
// Probably not valid XML
}
Причина, по которой вам нужны переменные wrapper_start и wrapper_end, заключается в том, что вы можете обрабатывать фрагменты XML между ними, вы можете рассматривать это как XML, который необходимо обработать:
<TestData>Data1</TestData><TestData>Data2</TestData>
, но при этом возникнет ошибка синтаксического анализа, поскольку документ XML должен иметь один корневой элемент.
Кроме того, обратите внимание, что вышеупомянутый метод не рекомендован мной, но я упомянул его, потому что я понимаю боль и сочувствую всем, кто должен поддерживать устаревшие системы. Если ваше приложение основано на упорядочении атрибутов, я настоятельно рекомендую вам хотя бы рассмотреть возможность пересмотра архитектуры вашего приложения.