Tag: xml

LibXML内部和输出编码

我正在尝试用ISO-8859-1中的libxml2编写XML文件。 但是从文档中看来,对于我创建的每个文本节点,我都必须转换为UTF-8,这是libxml的内部编码。 然后,当调用xmlSaveFormatFileEnc()时,libxml将转换为目标编码并将encoding属性添加到文档中。 这个假设是否正确? 现在我的代码大致如下: xmlNode *root_element = NULL, *node4 = NULL; xmlDoc *doc = NULL; doc = xmlNewDoc(BAD_CAST XML_DEFAULT_VERSION); root_element = xmlNewDocNode(doc, NULL, BAD_CAST(“root”), NULL); char * input_str = getLatin1Data(); isolat1ToUTF8(utf8_str, &file_size, input_str, &inlen); node4 = xmlNewCDataBlock(doc, BAD_CAST list_content, xmlStrlen(BAD_CAST utf8_str)); xmlAddChild(root_element, node4); xmlSaveFormatFileEnc(“test_file.xml”, doc, “UTF-8”, 1); xmlFreeDoc(doc); xmlNode *root_element = NULL, *node4 = […]

如何创建一个生成XML并随后运行DOS命令的C / C ++程序?

我需要提出一个生成xml文件的程序,如下所示: 1.890 1.800 使用节点mp中的值:ask和mp:bid随机生成但在两个预定义值(1.65和1.99)之间。 在程序的同一目录中生成xml之后,程序应在cmd命令行中运行一条命令,该命令指出: cachetool.bat -i cacheBody.xml -u REALTIME 其中cachetool.bat是一个已经完成的bash脚本,无法更改,也位于程序的同一目录中,其中cacheBody.xml是以前生成的xml。 这里的诀窍是,这应该反复运行,每次都用新值覆盖xml文件,然后再次运行命令,用新值调用xml。 应该有一种方法可以轻松地中断循环,但除此之外,这应该无限期地运行。 注意:使用c或c ++没有严格的规则,如果在这些语言中不可行或者有其他方法可以轻松实现,请随时提出建议。 我最初的提议是使用这些语言,因为这些是我用来处理的两种语言。

XML的forms语法

我试图在C中为XML文件构建小解析器。我知道,我可以找到一些完成的解决方案但是,我只需要一些基本的东西用于嵌入式项目。 我试图创建语法来描述没有属性的XML,只是标签,但似乎它不起作用,我无法弄清楚原因。 这是语法: XML : FIRST_TAG NIZ NIZ : VAL NIZ | eps VAL : START VAL END | STR | eps 以下是实现此语法的C代码的一部分: void check() { getSymbol(); if( sym == FIRST_LINE ) { niz(); } else { printf(“FIRST_LINE EXPECTED”); exit(1); } } void niz() { getSymbol(); if( sym == ERROR ) return; if( sym == […]

C树XML序列化

我正在尝试递归循环遍历树结构并使用(语言)C将其序列化为字符串。当涉及到C(来自Java,C#,动作脚本背景)时,我是一个真正的新手。一般来说,我很难掌握一些东西。 我应该使用库来帮助生成XML吗? 如何使用C实现递归? 谢谢

使用libxml2读取XML

我正在使用libxml2.so来解析LINUX平台上的C语言中的XML文件。 我的XML格式如下所述。 我可以在文件中包含任意数量的帐户。 在有人在论坛上建议我后,我第一次使用libxml。 我能够解析我只有一个帐户的文件。 如果我有多个帐户,我不明白如何实施。 任何人在C之前都实现了这样的东西,Linux上的libxml。 123 XYZ GA 223 ABC FL

是否有可能克隆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 […]

libxml xmlXPathEvalExpression命令

我已经开始在C使用libxml ,我正在使用xmlXPathEvalExpression函数来评估XPath。 我的XML文件实际上表示一个表,每个子节点表示该表中的一行,其属性是相应的值,因此顺序很重要。 我无法找到有关该function的信息。 它是否按文档顺序返回节点 例如,以下xml文件: 我可以确定在评估/Root/TABLE0/*并获取节点集后,调用nodeSet->nodeTab[0]会得到第一行, nodeSet->nodeTab[1]会得到第二行,依此类推? 如果没有,有没有办法按文件顺序对其进行排序? 谢谢

将C结构映射到XML元素

假设我有一个C或C ++结构,例如: struct ConfigurableElement { int ID; char* strName; long prop1; long prop2; … }; 我想将其加载/保存到以下XML元素: 这种映射可以简单地用Java / C#或任何其他语言完成,并且具有运行时reflection。 是否可以使用宏/模板技巧在C ++中以任何非繁琐的方式完成? 处理嵌套结构/联合的加分点。

使用xslt在c中创建一个xml文件

我有5个不同的键/值对,我知道我的xml文件应该如何。 如何从中创建xml文件? 1)我总是可以做printf() – 不是更好。 2)我可以使用xslt(stylesheet(.xsl)文件)来做到这一点吗? 并且,我也希望能够执行我刚才提到的反向操作。 给定一个xml文件,我想提取这5个键/值对。 我想,我肯定需要xsl文件来进行此操作。 我只需要一个起点是否可行。 我可以用C编写代码。 示例xml文件:

在OpenCV中创建XML文件

我创建了一个XML文件,但是当我尝试读取它时,我收到有关重复键的错误。 当我打开XML文件时,我注意到没有嵌套的东西,所有东西都被视为它自己的个别节点。 我想知道是否有办法正确创建XML文件并能够解析它。 下面我已经包含了用于编写XML文件的代码,我的XML输出以及我希望它的内容。 XML代码: // Open up the file so that we can write to it cv::FileStorage fs; fs.open(szFileName, cv::FileStorage::WRITE); // Check if we actually created the file if(fs.isOpened()) { fs << "Total_Images" << (int)vImages.size(); //cv::write(fs, "Total Images", (int)vImages.size()); for(int i = 0; i < (int)vImages.size(); i++) { char szSize[8]; string szNode; szNode = […]