У меня есть синтаксический анализ XML-документа с помощью xerces-c и его можно записать в файл как пример DOMPrint, но я не могу сохранить его в массиве. Я вижу онлайн, что я все еще должен использовать сериализатор, но я не уверен, что изменить. Очевидно, вместо использования LocalFileFormatTarget я должен использовать что-то еще, но поиск в Интернете ссылки на MemBufFormatTarget не дает никакого представления о том, как его использовать. Как я могу получить XML-документ в строку с помощью xerces-c?DOMDocument to string xerces-c
3
A
ответ
3
Используйте класс XMLFormatTarget как этот, чтобы получить выход в буфер символов:
class LStringXMLFormatTarget : public XMLFormatTarget
{
public:
LStringXMLFormatTarget()
{
m_pBuffer = NULL;
m_nTotal = 0;
}
char* GetBuffer()
{
return m_pBuffer;
}
ULONG GetLength()
{
return m_nTotal;
}
virtual void writeChars(const XMLByte* const toWrite, const XMLSize_t count, XMLFormatter* const formatter)
{
if(toWrite)
{
char* pTmp = new char[m_nTotal + count + 1];
if(m_pBuffer)
{
memcpy(pTmp, m_pBuffer, m_nTotal);
delete m_pBuffer;
}
memcpy(&pTmp[m_nTotal], toWrite, count);
m_nTotal += count;
m_pBuffer = pTmp;
if(m_pBuffer)
m_pBuffer[m_nTotal] = 0;
}
}
protected:
char* m_pBuffer;
ULONG m_nTotal;
};
Пожалуйста, обратите внимание, что это по намерению буфер одиночных символов, поскольку выход кодирования может также состоять из мульти- байтовые символы.
Используйте его вместе с объектами DOMLSOutput и DOMLSSerializer:
DOMLSOutput* pLSOutput = impl->createLSOutput();
if(pLSOutput)
{
pLSOutput->setByteStream(&stringTarget);
pSerializer->write(doc, pLSOutput);
}
P.S. Обратите внимание, что для более эффективной реализации writeChars() не копируйте и не выделяйте всегда новый буфер, но вместо этого вы можете зарезервировать достаточно большой блок памяти до или записать в несколько фрагментов памяти ... Эта реализация здесь - это просто показать как работает XMLFormatTarget.
Смежные вопросы
- 1. Xercesc XPath-функции
- 2. манипулировать PHP domdocument string
- 3. IStream to MSXML DOMDocument
- 4. XercesC 2.7 не удается получить DOMWriter
- 5. XERCESC 2.7 Проблема утечки памяти
- 6. String to char to string
- 7. xercesc NodeType не объявлен
- 8. Convert String [] [] to String []
- 9. String Array to String
- 10. Выход настройки XercesC в UTF-8
- 11. byte [] to String и String to byte []
- 12. Binary to string/string to binary
- 13. Bytes to String или String to Bytes?
- 14. javascript: String to Byte [] to String
- 15. PHP - DomDocument getElementsByTagName ('smth') -> item ($ string);
- 16. error get string to array string & string to array int
- 17. html to text with domdocument class
- 18. DOMNode "undefined" для xercesc на MS Visual C++
- 19. String to String, используя Spring?
- 20. Python regex to string string
- 21. String Buffer to String Builder
- 22. HEX String to Chinese String
- 23. SOAP to Stream to String
- 24. hex to binary to string
- 25. Texture2D to byte [] to String
- 26. Array [String] ИЛИ String to String
- 27. python to to char to string coversion
- 28. Ошибка при создании объекта парсера xercesc dom
- 29. double to hex string & hex string to double
- 30. Преобразование типа: Byte [] to String, String to Byte []