首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串xerces-c的DOMDocument

字符串xerces-c的DOMDocument
EN

Stack Overflow用户
提问于 2010-12-09 02:09:41
回答 1查看 3.3K关注 0票数 3

我使用xerces-c解析了一个XML文档,可以成功地将它写到像DOMPrint示例这样的文件中,但是我不能将它存储在数组中。我在网上看到我仍然应该使用序列化程序,但我不确定要改变什么。显然,我应该使用其他东西,而不是使用LocalFileFormatTarget,但是在网上查找MemBufFormatTarget上的参考资料并没有给出如何使用它的线索。如何使用xerces-c将xml文档转换为字符串?

EN

回答 1

Stack Overflow用户

发布于 2011-06-26 19:13:28

使用类似下面这样的XMLFormatTarget类将输出放入字符缓冲区:

代码语言:javascript
复制
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对象一起使用:

代码语言:javascript
复制
DOMLSOutput*  pLSOutput = impl->createLSOutput();

if(pLSOutput)
{
    pLSOutput->setByteStream(&stringTarget);
    pSerializer->write(doc, pLSOutput);
}

附注:这里的实现只是为了展示XMLFormatTarget是如何工作的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4390771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档