- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们采用了 Tiny XML 作为我们的 XML 解析器。我正在编写代码以从 XML 文件中获取调色板,并编写了一个访问者函数,如下所示:
PALETTE_PARSER::VisitEnter( const TiXmlElement& Element, const TiXmlAttribute* First Attribute)
{
if( Element.ValueStr() == "palette" )
{
AddPalette( Element );
return( true );
}
else
{
return( false );
}
}
我惊讶地发现这解析了第一个 palette
元素,然后停止了。当我检查时,文档说
If you return 'true' from a Visit method, recursive parsing will continue. If you return false, no children of this node or its sibilings will be Visited.
对我来说不解析 child 是有道理的,但 sibling 对我来说似乎很奇怪。这种行为的原因是什么?有什么办法让它做我想做的事吗?
也就是说,我只对调色板元素感兴趣,但它们可能不止一个(以及其他元素)。我想返回 false 以跳过其他元素类型,而不是必须递归地处理它们,同时仍然找到所有的调色板。所以我想我正在寻找一种方法来仅访问调色板元素,同时完全忽略其他所有内容。
最佳答案
What is the reason for this behavior?
目的是让您可以递归地搜索节点树,并在找到所需内容后立即停止。
I am interested only in the palette elements, but there may be more than one of them (as well as other elements)... So I guess I am looking for a way to visit only the palette elements, while completely ignoring everything else.
进一步的讨论意味着所有 <palette>
元素是树中某个特定节点的子节点。
Visit
用于检查整个(子)树,假设您感兴趣的节点(在本例中为 <palette>
元素)可以在任何深度找到。
如果不是这样,那么它就不是完成这项工作的工具。
您可以使用 FirstChild
/LastChild
/IterateChildren
/ETC。成员函数迭代包含所有 <palette>
的任何节点的子节点元素,并对实际存在的节点做任何你需要做的事情(经检查)<palette>
元素,并忽略其他元素。
关于c++ - 当 TinyXML 访问者函数返回 false 时,为什么它停止解析兄弟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286167/
我正在为我的应用程序使用 TinyXml 库,但 TiXmlDocument 对象只能加载 Xml 文件。它如何从字符串加载 Xml。你能告诉我如何做到这一点吗?非常感谢 涂。 最佳答案 您可以使用
有没有人有代码来遍历 TinyXML 中的子树的节点? IE:给定一个父级,遍历它的所有子级和所有子级的子级? 最佳答案 Begemoth 的回答对我来说听起来不错。 这是 TiXmlElement
大家好:)我开发了导出.xml文件(Android dimens文件)的程序。我的程序将导出 dimens_ldpi.xml、dimens_mdpi.xml、dimens_hdpi.xml 和 dim
我想在 xml 文件中添加元素。谁能帮我做到这一点? 以下是我的代码试用。 1.79639 0.430521 2.06832 0.652695
我不知道我做错了什么。我正在用 C++ 编写一个简单的程序来使用 TinyXml 编辑 xml 配置文件。 这是我的配置文件:
你好, 我有以下内容: class pers { public: pers(); std::string name; long favourite_numb
我正在尝试创建一个 XML 签名机制。我的 XML 可以像下面这样: ... ... 事实上,它对 Main 节点下的数据类型是不可知的。我只想计算包含在 Main 节点中的数据的
我有一个看起来像这样的 xml 文件 我正在尝试使用 TinyXML 在最后一个记录元素(具有最高 ID 的那个)之后插入
bool win::checkIfFScreen(sf::RenderWindow &window) { TiXmlDocument doc; TiXmlElement * fulls
我有一个这样的 xml 文件: 我想使用 tinyxml 根据条目名称(例如 (LengthFocalPointToISOCenter))检索所有值(例如 558)。这是我的代码,还没
试图编译 TinyXml++ tutorial使用 CodeBlocks (16.01) 和使用 VS2013,我在以下行遇到相同的错误: ticpp::Element* pElem = doc.Fi
我正在尝试将文件指针 popen 的输出连接到 TinyXML 的输入。 根据主页,最好的方法是使用解析方法: C style input: * based on FILE* * th
我正在尝试使用 TinyXML (c++) 从 xml 文件加载数据。 int height = rootElem->attrib("height", 480); rootElem 是加载的 xml
我正在尝试使用 TinyXml 从属性值中获取 std::string 。我唯一能得到的是 const char * val,而且我找不到任何方法从 const char * 转换为 std::str
我最近开始使用 tinyXML。问题是当我运行我的程序来读取 xml 时,它返回一个访问冲突。一条共同的线是: doc.FirstChildElement("Map")->FirstChildElem
我有一个 XML 文件,其中包含如下几行: B) ?(?&) ?(?E)"> 我在 C++ 中使用 TinyXML 库来解析此 XML 文件,但是当我尝试获取此类行的“pat”属性时,TinyXML
我有一个无法修复的 TinyXML 问题。我已经使用 C++ 扩展了一个 MFC 应用程序来工作。该应用程序进行自动化测试。完成后,它将所有数据保存在一个 XML 文件中。在我的 DOM 树的开头下方
当我尝试执行代码时遇到段错误,它编译时没有错误/警告,但在执行时给出错误段错误。下面是代码片段。 XMLElement *pStartTimeStamp = pRoot->FirstChildElem
我正在使用 tinyxml 来保存来自文本 ctrl 的输入。用户可以将他们喜欢的任何内容复制到文本框中,然后将其写入 xml 文件。我发现新行没有保存,& 字符也没有保存。奇怪的是 tinyxml
我有一个 xml 文件,程序的每个新线程 (BHO) 都使用同一个 Tinyxml 文件。 每次在程序中打开一个新窗口时,它都会运行这段代码: const char * xmlFileName = "
我是一名优秀的程序员,十分优秀!