![]() |
1
7
|
![]() |
2
6
我喜欢外国人
它是基于C的,但是有几个C++包装来帮助。 |
![]() |
4
2
http://sourceforge.net/projects/wsdlpull 这是Java XMLRAP API的一个直的C++端口。 http://www.xmlpull.org/ ) 我强烈推荐这个解析器。我必须定制它以在我的嵌入式设备上使用(没有STL支持),但我发现它非常快,开销很小。我必须创建自己的字符串和向量类,即使有了这些类,它在Windows上也能编译到大约60K。 我认为pull解析比SAX更直观。代码更紧密地反映了XML文档,从而更容易将两者关联起来。 缺点之一是它只是向前的,这意味着您需要在元素出现时解析它们。我们有一个相当混乱的设计来读取配置文件,我需要解析整个子树,进行一些检查,然后设置一些默认值,然后再次解析。使用这个解析器,处理类似情况的唯一真正方法是复制状态,用它进行解析,然后继续使用原始状态。与我们以前的DOM解析器相比,它在资源方面仍然是一个巨大的胜利。 |
![]() |
5
1
如果XML结构非常简单,可以考虑基于lex/yacc(flex/bison)构建一个简单的lexer/scanner。W3C的消息来源可能会激励您: http://www.w3.org/XML/9707/parser.y 和 http://www.w3.org/XML/9707/scanner.l . |
![]() |
6
1
第一对象 CMarkup 是一个C++类,它作为一个轻量级的大文件拉解析器(我推荐一个拉解析器而不是SAX)和巨大的XML文件编写器。可执行文件的大小总计约为250KB。当在内存中使用时,一个用户的报告显示它有1/3的tinyxml足迹。当用于大型文件时,它只在内存中保存一个小的缓冲区(如16KB)。CMarkup目前是一种商业产品,因此它受到支持、文档化,并且设计为使用单个cpp和h文件轻松添加到项目中。 最简单的尝试方法是使用免费的FirstObject XML编辑器中的脚本,如: ParseHugeXmlFile() { CMarkup xml; xml.Open( "HugeFile.xml", MDF_READFILE ); while ( xml.FindElem("//record") ) { // process record... str sRecordId = xml.GetAttrib( "id" ); xml.IntoElem(); xml.FindElem( "description" ); str sDescription = xml.GetData(); } xml.Close(); } 从“文件”菜单中,选择“新建程序”,将其粘贴到并为元素和属性修改它,按F9运行它,或按F10逐行执行它。 |
![]() |
7
1
你可以试试 https://github.com/thinlizzy/die-xml . 它看起来很小,很容易使用 这是一个最近开发的C++ 0xXML SAX解析器开源程序,作者愿意反馈 它解析输入流并在与std::函数兼容的回调上生成事件。 堆栈机器使用有限自动机作为后端,一些事件(开始标记和文本节点)使用迭代器以最小化缓冲,使其非常轻。 |
![]() |
8
0
我会看看那些 generate a DTD/Schema-specific parser 如果你想要小而快。这些对大文件来说非常有用。 |
![]() |
9
-1
我强烈推荐 pugixml PuGXML是一个轻量级的C++ XML处理库。 PuGXML是一个C++ XML处理库,它由一个DOM类接口组成,具有丰富的遍历/修改能力,一个非常快速的XML解析器,它从一个XML文件/缓冲器构建DOM树,并为复杂的数据驱动树查询提供一个XPath 1实现。还提供完整的Unicode支持,包括Unicode接口变体和不同Unicode编码之间的转换。” 在选择和在商业产品中使用pugixml之前,我已经测试了一些XML解析器,包括一些昂贵的解析器。 pugixml不仅是速度最快的解析器,而且拥有最成熟、最友好的API。我强烈推荐。这是非常稳定的产品!我从0.8版开始使用它。现在是1.7。 这个解析器的最大好处是实现了xpath 1.0!对于任何更复杂的树查询,xpath都是上帝派来的特性! 具有丰富遍历/修改功能的类DOM接口对于处理现实中的“重”XML文件非常有用。 它是一个小型、快速的解析器。即使你不介意链接C++代码,即使是IOS或Android应用程序也是不错的选择。 基准可以看出很多。见: http://pugixml.org/benchmark.html (x86)的几个示例:
对于(x64),pugixml是我所知道的最快的解析器。 同时检查XML解析器对内存的使用情况。一些解析器刚刚吞噬了宝贵的记忆! |
![]() |
batman · 如何用特定模式grep特定行及其子网行? 2 年前 |
![]() |
Jensen Holm · 在非常大的字符串中查找链接时遇到问题 3 年前 |
![]() |
MBF · PHP导入/解析XML文件内容保存到数据库 3 年前 |
![]() |
user10717742 · 用java编写的自定义文件解析器需要改进 3 年前 |
![]() |
Muhsin Muhammed · 向文件中的行添加引号和逗号 3 年前 |
![]() |
Felkru · 添加字符串会在Javascript中返回空字符串 3 年前 |
![]() |
Mustard Tiger · 熊猫解析文本列 3 年前 |