tinyxml如何在多个xml文件时使用它
tinyxml how to work with it when multiple xml files?
我有一个类似的xml
<xml http://......>
<value>
<name>me</name>
<age>12</age>
</value>
<value>
<name>kk</name>
<age>1</age>
</value>
</xml>
该xml位于一个名为s的字符串值中;我做到了:
const char *data =s.c_str();
TiXmlDocument doc;
doc.Parse((const char*)data, 0, TIXML_ENCODING_UTF8);
const std::string m_name;
TiXmlHandle handle(&doc);
TiXmlElement* section;
section = handle.FirstChild("xml").FirstChild("value").FirstChild("name").Element();
if (section) {//code }
它只给了我第一个名字。如何进入第二阶段?
thx
使用NextSibling
或NextSiblingElement
来获取DOM当前子树的同一层次结构上的下一个元素。
所有兄弟姐妹都链接在一起,在最后一个兄弟姐妹上调用NextSibling
将返回NULL
。假设您有第一个子元素,并希望在它和它的所有兄弟元素上运行一些代码,它可能看起来像这样:
TiXmlElement* element = ... (first child element)
do {
// process the current element
}
// try to advance to the next sibling, break the loop if there is none.
while((element = element->NextSiblingElement()) != NULL);
试试这个,而不是代码的最后3行:
TiXmlElement* xml = handle.FirstChildElement("xml");
TiXmlElement* value = xml->FirstChildElement("value");
while (value)
{
TiXmlElement* section = value->FirstChildElement("name");
if (section)
{
//code
}
value = value->NextSiblingElement("value");
}
实际上,您应该检查value->FirstChildElement("name")
和handle->FirstChildElement("xml")
的结果是否不为NULL。
相关文章:
- Cppcheck生成xml转储文件
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- c++ 读取 xml 文件的内容
- 删除 XML 文件中的子节点C++
- 在Cmake构建CmakeList.txt中读取/解析XML文件
- 使用 libxml2 解析 XML 文件时缺少元素值
- 为什么TinyXML2的XMLDocument::FirstChild()函数在尝试解析这个有效的XML文件时返回NULL?
- 如何循环 n 次,在 xml 文件中每个循环一个级别
- 无法从 XML 文件中获取值
- 使用 RapidXML 解析大型 XML(大小大于 65 KB)文件时出现问题
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 使用 TinyXML2 读取 C++ 中的 XML 文件
- OPENCV - 如何在OpenCV中使用Haar Cascade Github xml文件?
- 我们如何重新制作程序以打开xml文件并在价格单词之后读取百分比值并更改此值
- 如何使用QXmlStreamReader解析包含对其他XML文件的引用的XML文件
- 如何解析列存储格式的XML文件
- 从文本文件/XML文件创建C++类
- 如何在QT中读取GPX文件(xml格式)
- 无法打开文件XML.XMLINTF.OBJ