>

GetText 하고 싶다  Tinyxml-2를 사용하여 XML의 특정 요소 및 속성에서 얻을 수는 없습니다.

아래와 같은 XML :

<?xml version="1.0" encoding="UTF-8"?>
<properties>
<entry key="NAME">AAA/entry>
<entry key="SURNAME">BBB</entry>
</properties>

내 코드는 :

 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"

노드 이름이 같고 속성이 다른 다른 텍스트를 얻는 방법. 감사합니다.


  • 답변 # 1

    필요한 태그가있는 모든 요소를 ​​읽어야합니다. 다음과 같이 해보십시오 :

    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");
    }
    
    

  • 답변 # 2

    이와 같은 나의 솔루션

     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();
          }
      }
    
    

관련 자료

  • 이전 Java 8 - 자바 8 - 술어에 따라 폴더를 반복적으로 삭제
  • 다음 DELPHI 선언 문제