XML 从具有属性的元素中获取文本
XML GetText from element with attribute
我想使用 Tinyxml-2 GetText
来自 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"
如何获取其他具有相同节点名称和不同属性的文本。
谢谢
您必须阅读所有带有所需标签的元素。像这样尝试:
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");
}
我的解决方案是这样的,
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();
}
}
我想使用 Tinyxml-2 GetText
来自 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"
如何获取其他具有相同节点名称和不同属性的文本。 谢谢
您必须阅读所有带有所需标签的元素。像这样尝试:
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");
}
我的解决方案是这样的,
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();
}
}