【问题标题】:Add CDATA section to document xerces-c将 CDATA 部分添加到文档 xerces-c
【发布时间】:2017-07-31 08:53:15
【问题描述】:

我正在使用xerces-c 中的C++ 创建一个XML 文档。我面临的问题是我需要在文档中包含 cdata 部分。我为此找到了一个函数createCDATASection。但它的返回值是DOMCDATASection 类型,AppendChild 函数接受DOMNode 类型的参数。这里要使用铸造吗?或者有没有其他方法。

【问题讨论】:

  • 根据xerces.apache.org/xerces-c/apiDocs-3/classDOMCDATASection.htmlDOMCDATASection 继承自 DOMNode 所以不需要强制转换
  • @systemcpro :在直接使用时,我收到错误为 `error C2664: 'xercesc_3_1::DOMNode *xercesc_3_1::DOMNode::appendChild(xercesc_3_1::DOMNode *)' :无法转换参数 1从 'xercesc_3_1::DOMCDATASection *' 到 'xercesc_3_1::DOMNode *' 1> 指向的类型不相关;转换需要 reinterpret_cast、C-style cast 或 function-style cast`
  • 由于验证,我们将所有模型都转换为使用 xerces。大约一年前,虽然我不太记得实现细节,但我知道代码中没有一个 dynamic_cast。我想知道我们是否正在查看相同的 API?看看这个链接ibm.com/developerworks/cn/xml/x-xercc2/sidefile2.html

标签: c++ xml cdata xerces-c


【解决方案1】:

我猜你只是没有添加所有必要的包含语句。 请确保(至少)包含以下行。

#include "xercesc\dom\DOMCDATASection.hpp"

那么下面的代码就可以正确编译了。

XMLCh* data = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode("foo");
XERCES_CPP_NAMESPACE_QUALIFIER DOMCDATASection* pData = pDoc->createCDATASection(data);
pDoc->getDocumentElement()->appendChild(pData);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    相关资源
    最近更新 更多