Xerces c ожидающий элемент пространства имен

Я пытаюсь использовать xerces-c для анализа строки XML. Я использовал синтез кода xsd для генерации файлов cxx и hxx из xsd, соответствующего строке. Я пытался заставить его игнорировать пространство имен, связанное с xsd. В строке я получаю, что все элементы имеют пространство имен перед ними: filtermessage: filterMessage. Я также попытался отправить строку XML без пространства имен в нем. т.е. просто filterMessage. В любом случае я получаю эту ошибку: DOM-анализ исключения, исключение: ожидаемый элемент ‘filtermessage # msgSystem’. Я также попробовал:

  auto_ptr<filterMessage> table(filterMessage_(*xmlDoc));

что дает мне ту же ошибку.

Команда DOMNodeList * getchildren не имеет проблем. Кто-нибудь знает, как я мог заставить xerces-c игнорировать пространство имен? (Я успешно получил xerces-c, чтобы разобрать это сообщение, но это потребовало от меня вывезти пространство имен из xsd для поиска)

            XercesDOMParser* parser = new XercesDOMParser();
parser->setDoNamespaces(false);
parser->setDoSchema(false);
parser->setValidationScheme(XercesDOMParser::Val_Never);
parser->parse(xmlBuf);

DOMDocument *xmlDoc;

xmlDoc = parser->getDocument();

if(!xmlDoc)
{
cout << "Failed to parse" << endl;
return;
}
DOMElement* elementRoot = xmlDoc->getDocumentElement();

if( !elementRoot )
{
cout << "empty xml doc" << endl;
fflush(stdout);
}
else
{
DOMNodeList* children = elementRoot->getChildNodes();
cout << __FILE__ << " " << __LINE__ << endl;
fflush(stdout);
filterMessage msg(*elementRoot, xml_schema::flags::dont_validate);
cout << __FILE__ << " " << __LINE__ << endl;
fflush(stdout);
}

выход:

Filter.cpp 119
DOM Exception parsing, exception: expected element 'filtermessage#msgSystem'

это начало строки:

< filtermessage:filterMessage xmlns:filtermapping="filtermapping" xmlns:filtermessage="filtermessage">

< filtermessage:msgSystem>

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]