如何获取属性的值并将其显示在Tmemo上

时间:2012-02-24 19:23:03

标签: xml xml-parsing c++builder tinyxml tmemo

我有一个看起来像这样的xml文件......

<fruits>
    <apple color="red"/>
    <orange color="orange"/>
    <banana color="yellow"/>
</fruits>

我想为每个元素获取属性 color 的值,并将其显示在备忘录中。我知道如何在备忘录上显示元素的值,但我似乎无法弄清楚如何为属性执行此操作。到目前为止,这是我的代码......

TiXmlDocument XMLFile;
XMLFile.LoadFile("fruits.xml");

TiXmlHandle XMLFileHandle( &XMLFile );
TiXmlElement* root = XMLFile .FirstChildElement("fruits");

for(TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
    memoOverview->Lines->Add(elem->Attribute("val")->GetText());
}

我使用tinyxml来解析xml文件,我在C ++和C ++ Builder中这样做。

2 个答案:

答案 0 :(得分:0)

根据the documentation,您需要将elem->Attribute("val")->GetText()替换为elem->Attribute("color")

memoOverview->Lines->Add(elem->Attribute("color"));

答案 1 :(得分:0)

TiXmlDocument XMLFile;
XMLFile.LoadFile("fruits.xml");

TiXmlHandle XMLFileHandle( &XMLFile );
TiXmlElement* root = XMLFile.FirstChildElement("fruits");

char stringBuffer[64];

for (TiXmlElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
  if (strcmp(LastChildElement->Value(), "color") == 0)
  {
    strncpy(stringBuffer, LastChildElement->Attribute("color"), sizeof(stringBuffer));
  }

  memoOverview->Lines->Add( stringBuffer );
}