xerces自带例子的疑惑:CreateDOMDocument生成的xml用MemParse不能解析?

tyzyx 2007-02-13 05:22:56
把xerces 2.6 自带的例子CreateDOMDocument和MemParse写在一起,
用CreateDOMDocument的代码创建XML后,写到
XMLCh * pBuf = theSerializer->writeToString(*doc);
然后用MemParse的代码解析pBuf,提示:
Fatal Error at<file prodInfo,line 1,char 102> : An exception occurred!Type:UnexpectedEOFException,Message:The end of input was not expected
这是怎么回事?
解析写好的:
static const char* gXMLInMemBuf =
"\
<?xml version='1.0' encoding='UTF-16' standalone='no'?>\n\
<company>\n\
<product>XML4C</product>\n\
<category idea='great'>XML Parsing Tools</category>\n\
<logininfo username='test' userpsd='1223456'>logininfo</logininfo>\n\
<developedAt>\n\
IBM Center for Java Technology, Silicon Valley, Cupertino, CA\n\
</developedAt>\n\
</company>\
";
就没有问题
打出pBuf的内容为:
"<?xml version="1.0" encoding="UTF-16" standalone="no" ?><company><product>Xerces-C</product><category idea='great'>Parsing Tools</category><developedBy>Apache Software Foundation</developedBy></company>";
除了没有换行和 把' 换为" 以外没有区别了
哪位高人帮忙解决下?
...全文
335 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小嘴乱亲 2012-06-24
  • 打赏
  • 举报
回复
SAXParser::ValSchemes valScheme = SAXParser::Val_Auto;
bool doNamespaces = false;
bool doSchema = false;
bool schemaFullChecking = false;
SAXParser* parser = new SAXParser;
parser-> setValidationScheme(valScheme);
parser-> setDoNamespaces(doNamespaces);
parser-> setDoSchema(doSchema);
parser-> setValidationSchemaFullChecking(schemaFullChecking);
MemParseHandlers handler;
parser-> setDocumentHandler(&handler);
parser-> setErrorHandler(&handler);

楼主你好,我最近也在自学XERCES,能帮忙解释下上面这段代码的意思吗,看不太懂~谢谢
tyzyx 2007-02-14
  • 打赏
  • 举报
回复
SAXParser::ValSchemes valScheme = SAXParser::Val_Auto;
bool doNamespaces = false;
bool doSchema = false;
bool schemaFullChecking = false;
SAXParser* parser = new SAXParser;
parser->setValidationScheme(valScheme);
parser->setDoNamespaces(doNamespaces);
parser->setDoSchema(doSchema);
parser->setValidationSchemaFullChecking(schemaFullChecking);
MemParseHandlers handler;
parser->setDocumentHandler(&handler);
parser->setErrorHandler(&handler);
// char tmp[1024] ;
// strcpy(tmp,StrX(pBuf).localForm());
// int i = strlen(tmp);
MemBufInputSource* memBufIS = new MemBufInputSource
(
(const XMLByte*)pBuf
, strlen(StrX(pBuf).localForm())*2
, gMemBufId
, false
);
tyzyx 2007-02-14
  • 打赏
  • 举报
回复
自己解决了......
tyzyx 2007-02-14
  • 打赏
  • 举报
回复
自己UP一下
ToperRay 2007-02-13
  • 打赏
  • 举报
回复
XMLCh is unicode

应该是编码的问题。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧