首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自带有属性的元素的GetText

来自带有属性的元素的GetText
EN

Stack Overflow用户
提问于 2018-04-17 19:13:32
回答 2查看 1.2K关注 0票数 0

我想使用Tinyxml-2从特定的元素和GetText中获取属性,但我做不到。

我的XML如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<entry key="NAME">AAA/entry>
<entry key="SURNAME">BBB</entry>
</properties>

我的代码是:

代码语言:javascript
复制
  tinyxml2::XMLError eResult = xml_doc.LoadFile("C:\\test.xml");
  if (eResult != tinyxml2::XML_SUCCESS) return false;

  tinyxml2::XMLNode* root = xml_doc.FirstChildElement("properties");
  if (root == NULL) return false;

  tinyxml2::XMLElement* element = root->FirstChildElement("entry");
  if (element == NULL) return false;

  element->GetText()//return first element text "AAA"

如何获取具有相同节点名称和不同属性的其他文本。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-17 19:25:07

您必须使用所需的标记读取所有元素。就像这样:

代码语言:javascript
复制
tinyxml2::XMLElement* element = root->FirstChildElement("entry");
while (element != nullptr)
{
    const char * szAttributeText = nullptr;

    szAttributeText = element->Attribute("key");
    if (szAttributeText == nullptr) return tinyxml2::XML_ERROR_PARSING_ATTRIBUTE;
    std::string strAttrKey = szAttributeText;

    // ...

    element = element->NextSiblingElement("entry");
}
票数 0
EN

Stack Overflow用户

发布于 2018-04-17 20:05:33

我的解决办法是这样,

代码语言:javascript
复制
  const char* name;
  const char* surname;

  tinyxml2::XMLElement* element = root->FirstChildElement("entry");
  while (element != NULL)
  {
      if(element->Attribute("key","NAME"))
      {
         name=element->GetText();
      }
      else if(element->Attribute("key","SURNAME"))
      {
         surname=element->GetText();
      }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49885840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档