Poco :: DOMParser и wstring

0

Есть ли способ сделать 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?

Теги:
xml-parsing
wstring
poco-libraries

1 ответ

1

Вы должны иметь возможность использовать 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 выпуска.

  • 0
    Я и мои коллеги исправили эту проблему, используя toXMLString & fromXMLString для преобразования std :: string. Вероятно, это не правильно. (метод parseString все еще недоступен). Я предполагаю, что никто не использует DOMParser для wstring, поэтому эта функциональность недоступна. Также мы столкнулись с той же проблемой (не могу скомпилировать с XML_UNICODE и XML_UNICODE_WCHAR_T) с PocoUtils / XMLconfiguration.cpp
  • 0
    Вы можете конвертировать туда и обратно из / в std :: string, если вы уверены, что std :: string имеет кодировку UTF-8. Вы, конечно, заплатите некоторое XML_UNICODE_WCHAR_T производительности за конверсии. Util зависит от XML, поэтому, если сборка XML не работает с XML_UNICODE_WCHAR_T , Util также не будет строить. Вышеупомянутое исправление должно позаботиться об этом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню