问题标签 [pugixml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
130 浏览

c++ - C++ PugiXML 向量迭代器不兼容错误

我有一个应用程序,我在其中使用 PugiXML 将 XML 代码解析为带有纹理的精灵。但是,我在使这个for循环正常工作时遇到了问题,因为编译器Expression: vector iterators incompatible在循环期间一直返回运行时错误,就在initCollisionObject启动时。任何帮助将不胜感激!

for环形:

initCollisionObject功能:

0 投票
2 回答
1604 浏览

c - PugiXML 值输出编码

我有点困惑。pugi::xml_node::value() 返回chart_t 类型的字符串,它可以是wchar_t 或char,取决于编译标志。在 pugiXML 的文档中说它适用于 utf 系列编码的不同类型。好的。我正在使用 pugi::xml_document::load_file() 加载 uft16 编码的文档。那么当我迭代 throw 节点并在每个节点上调用 value() 方法时,我将在哪种编码中获得值?大概是在对我的数据进行编码时,我已将其加载到 xml_document。这意味着在 utf16 中。如果它在 utf16 中,那么我将无法使用该值,因为会有 0 符号并且我将无法使用 strlen、strcpy 等等......我已经进行了这样的测试,但一切正常美好的。有人知道它是如何工作的吗?

0 投票
2 回答
10547 浏览

c++ - 从头开始构建 xml 树 - pugixml C++

首先,我想说我一直在使用由 Frank Vanden Berghen 编写的 XML 解析器,并且最近尝试迁移到 Pugixml。我发现过渡有点困难。希望能在这里得到一些帮助。

问题:如何使用 pugixml API 从头开始​​为下面的小 xml 构建树?我尝试查看 pugixml 主页上的示例,但其中大多数都使用根节点值进行了硬编码。我的意思是

是硬编码的。我还尝试阅读有关 xml_document 和 xml_node 文档,但如果我必须从头开始构建树,我不知道如何开始。

XML:

我可以看到大多数关于如何读取/解析 xml 的示例,但我找不到如何从头开始创建一个。

0 投票
1 回答
978 浏览

c++ - PugiXML empty document without error

I've the following XML:

I'm trying to parse it using PugiXML but after load my document is empty, the result description say no error:

but it's a empty doc:

Output:

I think that XML isn't problem, right ?

The XML is generated by other app, so I can't change, if have a problem in XML I'll need change XML parser ? TinyXML or libxml++ ?

0 投票
1 回答
1764 浏览

c++ - 防止重复 pugixml::xml_node

我正在编写将设置存储在 XML 文件中的应用程序的一部分,但我不想“客户端”重复,我想要这个:

但相反,我得到:

以为“只检查节点是否已经存在”,但这就是问题所在,所以我有这段代码:

!xclient总是评估为真,也尝试过if (xclient.empty())但也不起作用。

0 投票
1 回答
368 浏览

c++ - 递归pugixml,无法获取值

嗯,我有代码

在该代码之后,我无法从文本中获取任何值,但可以直接使用 like

正在工作中。需要帮忙。谢谢。

0 投票
1 回答
1107 浏览

c++ - 使用 pugixml 解释程序的内存消耗

我有一个程序可以解析约 50MB 的 XML 文件并将数据提取到内部对象结构中,而没有指向原始 XML 文件的链接。当我试图粗略估计我需要多少内存时,我估计是 40MB。

但我的程序需要 350MB 之类的空间,我试图找出发生了什么。我使用boost::shared_ptr,所以我不处理原始指针,希望我没有产生内存泄漏。

我试着写我所做的,我希望有人能指出我的过程中的问题,错误的假设等等。

首先,我是如何测量的?我曾经htop发现我的内存已满,使用我的代码的进程正在使用大部分内存。为了总结不同线程的内存并获得更漂亮的输出,我使用了http://www.pixelbeat.org/scripts/ps_mem.py这证实了我的观察。

我粗略地估计了理论消耗量,以了解哪个因素介于消耗量和至少应该是什么之间。是10。所以我用来valgrind --tool=massif分析内存消耗。它表明,在 350MB 的峰值时,250MB 被xml_allocator来自pugixml库的称为的东西使用。我去了我的代码部分,我在其中实例化pugi::xml_document并放入std::cout对象的析构函数以确认它已被释放,这发生在我的程序的早期(最后我睡了 20 秒,以便有足够的时间来测量内存消耗,即使在析构函数的控制台输出出现后仍保持 350MB)。

现在我不知道如何解释这一点,并希望有人能在我做出错误假设或类似假设的地方帮助我。

在此处输入图像描述

最外面的代码片段使用pugixml类似于:

而且由于在我的代码中我没有在pugixml某处存储元素(只有从中提取的实际值),所以我doc希望在离开函数时释放所有资源parse,但是在图表上看,我不知道在哪里(在时间轴上) 有时候是这样的。

0 投票
1 回答
1629 浏览

ios - 在 iOS 上保存 xml 文件(pugiXml 和 Cocos2d-x)

最近我遇到了 pugiXml 的一个大问题(在 cocos2d-x 引擎中使用)。

不久,我做了一个问答游戏(在提到的 Cocos2d-x 中)。我将我的问题(和其他一些数据)保存在一个 Xml 文件中。在新游戏中,它们会被解析并插入字典。如果回答了一个问题,则将一个指示答案的短字符串(无论它是否好 - 是/否)插入到该 Xml 文件中(在该特定问题下方)。后来,我使用这些数据来显示统计数据(我计算了回答好的问题的百分比 - 这是计算 Y 的数量除以问题的数量,再乘以 100)。

我用:

获取文件及以后

将文件放入缓冲区并

解析数据并开始处理它。

最后,我将文件保存为:

安卓:

  • 它运行良好,尽管我不得不将带有问题的文件复制到 /data/data/app/Files/ 。尽管如此,它仍在许多设备上进行更改。

IOS:

  • 不幸的是,在 iOS 上它不起作用。数据被加载和解析(这意味着我可以真正玩游戏),但它们没有被保存。我尝试将文件移动到其他文件夹(从 Resources/Documents 开始,然后是主 Resources 文件夹、Resources/Library/Application Support)。它仍然没有保存数据,我不知道该怎么做。结果是我的统计数据没有被很好地计算(无论您如何回答问题 - 所有这些都是错误的,因为 Xml 文件没有被更新)。

有没有人遇到过类似的问题?你能帮我么?

0 投票
3 回答
1751 浏览

c++ - C++ Pugixml 通过属性 id 获取父级的子级

例如:

如何获取 id 为 1 的级别数据?现在我正在使用pugi::xml_node level = levels.child("level")但是返回所有级别..

问候, GJJ

0 投票
0 回答
596 浏览

c++ - EOF 处的 Cygwin g++ 编译器内部错误(分段错误),带有 pugixml

这是重现问题的最少代码。唯一的外部先决条件是 pugixml.hpp 文件。

上下文是一个类,用于解析 XML 文件中的 id 引用(即,给定一个字符串值,找到其 id 属性设置为该值的节点)。我有一些包装 pugixml API 的帮助类,其中相关部​​分是这样的:

代理.h

我的 id 解析器类的第一个实现是这样的

IdNodeSet-Ah

这在 Cygwin g++ 3.4.4(cygming special,gdc 0.12,使用 dmd 0.125)中产生了以下错误:

这完全令人费解。

我唯一想到的是在构造函数中使用'*this'。但是使用辅助成员类进行修改:

IDNodeSet-Bh

产生相同的错误:

这不是火箭科学代码,那么是什么导致编译器核心转储?

更新: 预处理器输出(即来自 g++ -E)在这两种情况下编译都没有问题。所以这有资格作为一种可能的解决方法,但问题仍然存在:在解决方法不可行的情况下应该避免哪种代码?