Tag: xml parsing

是否有可能克隆xmlTextReader(或多遍读取)?

我目前必须修复现有的应用程序以使用libxml2的DOM接口以外的东西,因为事实certificate它传递的XML文件太大而无法加载到内存中。 我已经重写了从迭代DOM树到大部分时间使用xmlTextReader的数据加载,而没有太多问题。 (我使用xmlNewTextReaderFilename打开本地文件。) 然而,事实certificate,大数据所在的子树必须不按顺序读取,但我必须先收集一些(少量)数据。 (问题正是这个子树包含大量数据,因此只将这个子树加载到内存中也没有多大意义。) 最简单的方法就是“克隆”/“复制”我当前的读者,提前读取然后返回原始实例继续阅读。 (似乎我不是第一个 ……在C#方面甚至实现了一些东西: 带有书签的XML阅读器 。) 但是,似乎没有任何方法可以“复制”xmlTextReader的状态。 如果我不能重新读取文件的一部分 ,我也可以重新读取整个文件,虽然这很浪费,但在这里也可以,但我仍然需要记住我之前的位置? 是否有一种简单的方法可以记住xmlTextReader在当前文档中的位置,这样我以后可以在第二次读取文档/文件时再次找到该位置? 这是一个问题的例子: … here goes up to one GB in stuff … <!– << … even more stuff … <!– I need (part of) the data here to meaningfully interpret the data in [y2] that came before. The best approach would seem […]

如何使用libxml2库在c中解析XML字符串而不是XML doc

使用外部XML文件提到了libxml2文档libxml教程中的所有示例。 如果我需要解析包含XML内容的字符串怎么办? 它是否真的可以在libxml2 C库中使用,或者唯一的解决方案是将字符串保存到文件中并将该文件名作为参数发送到下面的函数。 但它会严重影响性能。 doc = xmlParseFile(docname); libxml2中是否有任何内置函数来解析字符数组?

使用xml parser expat获取xml数据

我设法解析好了。 但现在我无法获得我需要的值。 我可以得到元素和属性。 但无法获得价值。 我想在这个xml中得到frame的值为20。 /* track the current level in the xml tree */ static int depth = 0; /* first when start element is encountered */ void start_element(void *data, const char *element, const char **attribute) { int i; for(i = 0; i < depth; i++) { printf(" "); } printf("%s", element); for(i = […]