Есть ли способ сделать Poco::DOMParser
работать с std::wstring
?
Я создаю pocoXML lib с определенными XML_UNICODE
и XML_UNICODE_WCHAR_T
. Теперь я пытаюсь скомпилировать такой код:
Poco::XML::DOMParser parser;
std::wstring xml = getXml(); //Init string with xml document
// Cannot compile, cause parseString wants only std::string
// not wstring
Poco::AutoPtr<Poco::XML::Document> document = parser.parseString(xml);
Poco::XML::SaxParser
может анализировать std::wstring
и Poco::XML::DOMParser
использовать SAXParser для создания документа. Поэтому я понятия не имею, почему я не могу передать std :: wstring в parseString.
Может быть, я не могу использовать parseString, но есть еще один способ разбора std :: wstring с DOMParser?
Вы должны иметь возможность использовать std :: wstring в Windows с определенным только XML_UNICODE_WCHAR_T
. На платформах POSIX вам нужно убедиться, что wchar_t имеет ширину 2 байта (проверьте определение __SIZEOF_WCHAR_T__
). Хорошей практикой является использование XMLString, который соответствующим образом определяется из std::basic_string
на XML_UNICODE_WCHAR_T
определения XML_UNICODE_WCHAR_T
.
Однако существует проблема, которая предотвращает компиляцию Poco :: XML с помощью XML_UNICODE_WCHAR_T
. Github проблема была создана, и проблема в настоящее время фиксируется в разработке отрасли для 1.5.3 выпуска.
XML_UNICODE_WCHAR_T
производительности за конверсии. Util зависит от XML, поэтому, если сборка XML не работает сXML_UNICODE_WCHAR_T
, Util также не будет строить. Вышеупомянутое исправление должно позаботиться об этом.