本文介绍了使Xerces解析字符串而不是文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道如何仅使用XercesDOMParser从xml文件创建完整的dom:

I know how to create a complete dom from an xml file just using XercesDOMParser:

xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser();
parser->parse(path_to_my_file);
parser->getDocument(); // From here on I can access all nodes and do whatever i want

嗯,那行得通...但是,如果我想解析一个字符串怎么办?像

Well, that works... but what if I'd want to parse a string? Something like

std::string myxml = "<root>...</root>";
xercesc::XercesDOMParser parser = new xercesc::XercesDOMParser();
parser->parse(myxml);
parser->getDocument(); // From here on I can access all nodes and do whatever i want

我正在使用版本3.在AbstractDOMParser内部,我看到了该解析方法及其重载版本,仅解析文件.

I'm using version 3. Looking inside the AbstractDOMParser I see that parse method and its overloaded versions, only parse files.

如何从字符串中解析?

推荐答案

创建 MemBufInputSource parse

Create a MemBufInputSource and parse that:

xercesc::MemBufInputSource myxml_buf(myxml.c_str(), myxml.size(),
                                     "myxml (in memory)");
parser->parse(myxml_buf);

这篇关于使Xerces解析字符串而不是文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!